Cámara sigue al personaje

Hola a todos los pileros, quería hacerle una consulta con el tema de que la cámara siga al personaje, el tema es que si pongo en el protagonista que la cámara lo siga

this.camara.seguir_al_personaje(this)

la cámara lo sigue pero esta centrada, hay alguna forma de hacer que lo siga pero con la cámara un poco mas arriba o mas a la derecha??

Me parece que pilas tendría que agregar el “ACTOR CÁMARA” y que sea posible modificar sus parámetros y posiciones en el mundo para que luego al seguir al personaje pueda seguirlo desde la posición donde se encuentra…
Nose tanto de pilas engine, pero veo que no existe la Camara como un actor.de la escena en la gerarquia de objetos.
La camara como objeto de escena esta tanto en unity, como en godot engine como en Unreal ENgine.
Eso es algo fundamental, ya que la cámara tiene que ser un objeto de la escena, sobre todo porque muchas veces se cambia entre diferentes cámaras
Se ve que hay que agarrar la clase cámara y modificar algunos valores.
Manejo de Cámara - pilas-engine.

Otro tema más, si la camara es un actor en la escena, tendira que poder interactuar en la gerarquia de objetos de la escena.
Por lo tanto al hacerlo hijo del personaje principal tendria que seguirlo sin nisiquiera tener que usar el “método cámara.seguir().”
Por lo menos asi funciona en la mayoria de los motores de vidoejuegos.

No he entendido ni la mitad de las cosas que dijo @kone9 jaja soy muy novato en lo que es programación en si.
Respecto de tu pregunta @PabloSosa La camara tiene atributos similares a las de los actores:
this.camara.x
this.camara.y
Puedes modificar estos manualmente para hacer que siga al actor:
this.camara.x = this.x + 100;
this.camara.y = this.y
Esto haría que la camara este 100 pixeles a la derecha del actor siempre. Lo malo es que se pierde el efecto de seguir.
Si quieres tener también el efecto de seguir, deberás crear otro actor, hacer que la camara le siga y poner a este nuevo actor a la derecha del personaje desde la función actualizar.
¿Me explique bien? no tengo Pilas a mano así que no puedo hacer un ejemplo

1 Like

¡Hola!, otra opción es mover la cámara justo después de usar la función carama.seguir_al_actor así:

// 5 es la suavidad del movimient de la cámara.
// y el último `true` es para que la cámara pueda salir
// del escenario y moverse libremente.
this.pilas.camara.seguir_al_actor(this, 5, true);

// se desplaza la cámara 40 píxeles a la derecha del actor.
this.pilas.camara.x += 40;

Internamente, la función camara.seguir_al_actor hace justamente lo que dice @lukeitor, simplemente cambia los atributos this.camara.x y this.camara.y para “simular” el movimiento de cámara, así que siempre vas a poder modificar esos atributos libremente.

Te paso un ejemplo que armé para mostrar esto, observá el código de la nave, vas a notar que la cámara sigue al actor pero luego le aplico un cambio a la coordenada x de la cámara.

Abrir este proyecto en el editor de pilas

@kone9 , sobre el actor cámara, me gusta la idea, voy a hacer un boceto de eso en la semana y lo voy a publicar en el foro a ver qué les parece.

¡Abrazo!

2 Likes

Genial @hugoruscitti me gusto la forma, lo del actor cámara es una buena idea también, para poder tener una cámara personalizada y también para poder hacer varias cámaras