Author Topic: Bouger la caméra  (Read 601 times)

Delltus

  • Newbie
  • *
  • Posts: 15
    • View Profile
Bouger la caméra
« on: December 23, 2017, 01:12:44 am »
Bonsoir je souhaiterais savoir comment déplacer la caméra vers une porte part exemple qui s'ouvre j'ai regarder sur http://www.solarus-games.org ça dis que depuis 1.5 il faut plus utiliser move.camera est il faut utiliser entité: get_bounding_box ()

j'ai essayer mais je sais pas exactement comment l'utiliser j'avais penser à ça mais j'arrive pas à bien l'utiliser, pouvez vous nous dire comment faire je vous remercie d'avance à vous je vous remercie également pour vos dernière réponse sur les autre sujet que j'ai poster.

Code: [Select]
function Switch_a:on_activated()
    map:get_entity("Porte_b_3")
    sol.audio.play_sound("door_open")
    sol.audio.play_sound("secret")
  map:open_doors("Porte_a")
« Last Edit: December 23, 2017, 01:48:45 am by Delltus »

MetalZelda

  • Hero Member
  • *****
  • Posts: 551
    • View Profile
Re: Bouger la caméra
« Reply #1 on: December 23, 2017, 05:53:48 pm »
Tu as plusieurs facon de faire.

Dans solarus < 1.5, tu peux utiliser une fonction hardcodée map:move_camera
Dans les futures versions, il me semble que cette fonction n'existera plus mais tu peux cependant la coder et modifier son comportement comme bon te semble

On te conseilleras d'utiliser les metatable comme le script ci-dessous

Copies ce code, enregistre le script et dans main.lua, utilise require()

Code: Lua
  1. local map_metatable = sol.main.get_metatable("map")
  2.  
  3. -- Move the camera
  4. function map_metatable:move_camera(x, y, speed, callback, delay_before, delay_after)
  5.   local camera = self:get_camera()
  6.   local game = self:get_game()
  7.   local hero = self:get_hero()
  8.  
  9.   delay_before = delay_before or 1000
  10.   delay_after = delay_after or 1000
  11.  
  12.   local back_x, back_y = camera:get_position_to_track(hero)
  13.   game:set_suspended(true)
  14.   camera:start_manual()
  15.  
  16.   local movement = sol.movement.create("target")
  17.   movement:set_target(camera:get_position_to_track(x, y))
  18.   movement:set_ignore_obstacles(true)
  19.   movement:set_speed(speed)
  20.   movement:start(camera, function()
  21.     local timer_1 = sol.timer.start(self, delay_before, function()
  22.       callback()
  23.       local timer_2 = sol.timer.start(self, delay_after, function()
  24.         local movement = sol.movement.create("target")
  25.         movement:set_target(back_x, back_y)
  26.         movement:set_ignore_obstacles(true)
  27.         movement:set_speed(speed)
  28.         movement:start(camera, function()
  29.           game:set_suspended(false)
  30.           camera:start_tracking(hero)
  31.           if self.on_camera_back ~= nil then
  32.             self:on_camera_back()
  33.           end
  34.         end)
  35.       end)
  36.       timer_2:set_suspended_with_map(false)
  37.     end)
  38.     timer_1:set_suspended_with_map(false)
  39.   end)
  40. end

Donc, dans ton script, tu devrais utiliser

Code: Lua
  1.   function Switch_a:on_activated()
  2.     local b3_door = map:get_entity("Porte_b_3") -- ?
  3.     local x, y = map:get_entity("Porte_a"):get_position()
  4.     local speed = 90
  5.  
  6.     map:move_camera(x, y, speed, function()  
  7.       sol.audio.play_sound("door_open")
  8.       sol.audio.play_sound("secret")
  9.       map:open_doors("Porte_a")
  10.     end, 1000, 1000)
  11.   end
  12.  

Delltus

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: Bouger la caméra
« Reply #2 on: December 23, 2017, 09:01:30 pm »
Je débute dans le code peux tu êtres un peux plus clair dans les étapes à suivre tu mas perdu en route ^^ je suis en 1.5.3
merci pour ta réponse je suis prêt à suivre tes introductions

Diarandor

  • Hero Member
  • *****
  • Posts: 1008
  • Cats are cool! (ΦωΦ)
    • View Profile
Re: Bouger la caméra
« Reply #3 on: December 23, 2017, 09:22:52 pm »
You should first learn Lua: read Lua tutorials, watch Christopho's tutorials and study scripts of other projects. Later, start with small things and testing funcions of the Solarus Lua API, and finally make more complex things. Be patient.
“If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you.”

Delltus

  • Newbie
  • *
  • Posts: 15
    • View Profile
Re: Bouger la caméra
« Reply #4 on: December 26, 2017, 06:29:59 pm »
Je suis d'accord avec toi j'apprend des différents projet ect.. mais pouvez vous me dire comment utiliser

Quote
fonction map: move_camera (x, y, vitesse, rappel, delay_before, delay_after)

  caméra locale = map: get_camera ()
  jeu local = map: get_game ()
  Héros local = map: get_hero ()

  delay_before = delay_before ou 1000
  delay_after = delay_after ou 1000

  back_x local, back_y = camera: get_position_to_track (héros)
  jeu: set_suspended (true)
  caméra: start_manual ()

  mouvement local = sol.movement.create ("cible")
  mouvement: set_target (camera: get_position_to_track (x, y))
  mouvement: set_ignore_obstacles (true)
  mouvement: set_speed (vitesse)
  mouvement: démarrer (caméra, fonction ()
    local timer_1 = sol.timer.start (map, delay_before, function ()
      rappeler()
      local timer_2 = sol.timer.start (map, delay_after, function ()
        mouvement local = sol.movement.create ("cible")
        mouvement: set_target (back_x, back_y)
        mouvement: set_ignore_obstacles (true)
        mouvement: set_speed (vitesse)
        mouvement: démarrer (caméra, fonction ()
          jeu: set_suspended (false)
          caméra: start_tracking (héros)
          si map.on_camera_back ~ = nil alors
            carte: on_camera_back ()
          fin
        fin)
      fin)
      timer_2: set_suspended_with_map (false)
    fin)
    timer_1: set_suspended_with_map (false)
  fin)
fin

Pour bouger la caméra.

Diarandor

  • Hero Member
  • *****
  • Posts: 1008
  • Cats are cool! (ΦωΦ)
    • View Profile
Re: Bouger la caméra
« Reply #5 on: December 27, 2017, 05:53:35 am »
You cannot definitely use that code to move the camera, because you have broken the code that MetalZelda gave you. Your syntax is all wrong, so you still don't even know the basics of programming. Let's do things in the right order:
1) Learn to code in Lua. -> You are still at this step. Do not jump to step 4, it is too soon!
2) Watch Chris' tutorials, study his scripts.
3) Test small changes of others' code, adapt the code to your purposes and mess around.
4) Start coding your game.
5) Sell your game and get rich!
“If you make people think they're thinking, they'll love you. But if you really make them think, they'll hate you.”

MetalZelda

  • Hero Member
  • *****
  • Posts: 551
    • View Profile
Re: Bouger la caméra
« Reply #6 on: December 31, 2017, 04:10:31 pm »
Oui, il faudrait que tu apprennes le LUA afin d'y connaitre les bases.
Tu devrais suivre les tutoriaux de Christopho, ca peut parfaitement aider a maitriser et l'éditeur, et le LUA dans une forme basique

https://www.youtube.com/watch?v=rsammSHv7xc&index=1&list=PLzJ4jb-Y0ufzB4nXkSINFhbrtLlnlI4li