pilas-engine

Dejar de seguir

Hola @hugoruscitti como estás?? Espero que estés bien, vengo con otra consulta, la cosa es que quiero que la cámara siga a un actor, entonces uso la función

this.camara.seguir_al_actor(actor)

El problema viene ahora porque quiero que en sierto punto la cámara dejé de seguir al actor y ya no siga a nadie, como hago eso? Ya que no encontré en la cámara una función que deje de seguir al actor, gracias y saludos.

Hola @PabloSosa!!

Hay varias formas de controlar la cámara para que deje de seguir a un actor, por lo general
se suele crear alguna variable extra para saber si se tiene que seguir o no al protagonista.

Ten en cuenta que la función seguir_al_actor solamente mueve la cámara un poquito en dirección a donde se encuentra el actor, no es una función que “recuerda” a qué actor seguir, sino que siempre se tiene que llamar constantemente. Esa es la razón por la que la función seguir_al_actor
se suele llamar dentro del método actualizar.

Por ejemplo, si tengo un actor con este código podría hacer que la cámara lo siga solamente
cuando está dentro de una zona:

actualizar() {
   if (this.x < 400) {
       this.pilas.camara.seguir_al_actor(this);
   } else {
       // está fuera de la zona, la cámara no lo seguirá.
   }
}

Otra opción, un poco más compleja, es mover el código de seguimiento del actor a la escena, y
ahí, elegir a qué actor debe seguir la cámara en cada momento:

class escena2 extends Escena {
  actor_a_seguir: Actor;
  nave: Actor;
  enemigo: Actor;

  iniciar() {
    this.nave = this.pilas.obtener_actor_por_nombre("nave");
    this.enemigo = this.pilas.obtener_actor_por_nombre("enemigo");

    this.actor_a_seguir = this.nave;

    // Luego de 10 segundos, la cámara dejará de seguir
    // al protagonista y seguirá al enemigo.

    this.pilas.luego(10, () => {
      this.actor_a_seguir = this.enemigo;
    });
  }


  actualizar() {
    this.pilas.camara.seguir_al_actor(this.actor_a_seguir);
  }
}

Por ejemplo, acá hice un ejemplo en donde dos actores conversan entre sí, y la cámara los
pone en primer plano para que se pueda leer el diálogo.

Pulsá el botón “reiniciar escena” porque la secuencia dura muy poquito tiempo.

Abrir este proyecto en el editor de pilas

Gracias @hugoruscitti la segunda opcion me gusto mas, es lo que buscaba, :slight_smile: saludos