Ah oki, creo que ahora entendí bien…
Se me ocurre una forma de implementar el tema de los turnos, hice dos variables: una almacena qué jugador tiene turno y otra simplemente sirve para indicar si hay al menos uno de los jugadores en movimiento:
Estas dos variables están en el código del proyecto, así las pueden acceder todos los actores:
class Proyecto {
turno_jugador: number;
bola_en_movimiento: boolean;
iniciar() {
this.turno_jugador = 1;
this.bola_en_movimiento = false;
}
}
Ahora, para que la flecha desaparezca y vuelva a aparecer usé esas variables. Si la variable “bola_en_movimiento” está en false
, eso quiere decir que algún jugador debe lanzar, así que la flecha queda visible.Si en cambio la variable “bola_en_movimiento” está en true
la flecha desaparece.
Este es el código de la flecha
actualizar() {
if (this.proyecto.bola_en_movimiento) {
this.transparencia = 100;
} else {
this.transparencia = 0;
}
/// más código
Luego, para que la flecha “salte” de un jugador a otro, hice que el código del método actualizar lea la variable “turno_jugador” y con eso cambie de actor principal:
let bola = null;
if (this.proyecto.turno_jugador === 1) {
bola = this.pilas.obtener_actor_por_nombre("j1");
}
if (this.proyecto.turno_jugador === 2) {
bola = this.pilas.obtener_actor_por_nombre("j2");
}
if (this.proyecto.turno_jugador === 3) {
bola = this.pilas.obtener_actor_por_nombre("j3");
}
if (this.proyecto.turno_jugador === 4) {
bola = this.pilas.obtener_actor_por_nombre("j4");
}
Después, para hacer que los jugadores puedan ser controlados, copié el código del jugador 1 y lo llevé al jugador 2, 3 y 4. Lo único diferente en cada código es esta linea que indica a qué jugador corresponde el código:
Es decir, el jugador 2 tiene un código que dice this.soy_jugador = 2
y así con el jugador 3 y 4…
y por último, el turno de cada jugador lo hice en el código de la escena. Básicamente la escena se encarga de mantener las variable bola_en_movimiento
y turno_jugador
con el valor sincronizado. Si miras el código de la escena vas a notar que todo el tiempo está mirando la velocidad de los actores para saber si se mueven y va incrementando la variable turno_jugador
para ir distribuyendo los turnos. La escena es como el árbitro del juego en este caso.
Te paso el código con estos cambios aplicados:
https://app.pilas-engine.com.ar/#/proyecto/a3ccf453-32b9-49a3-9dda-db72185ba8d0
¡Ojalá te sirva para continuar con tu juego!, cualquier cosa avisame.
¡Abrazo!