Hola todos. Felicitaciones @hugoriscitti por la nueva mejoras que le diste a pilas engine. Quisiera saber cómo hago para que el enemigo note mi presencia a una cierta distancia. Y él me dispare y si me alegro lo deje de hacer?
Hola @VictorRico!!!, para mí una forma de implementar esta funcionalidad es utilizando autómatas y la función obtener_distancia_al_actor
.
Vamos a suponer que tu protagonista es una nave, y el enemigo es una cara que aparece en la parte superior de la pantalla:
También vamos a suponer que la nave se puede mover libremente, pero cuando se encuentra muy cerca del enemigo este cambia de actitud y comienza a dispararnos!
La estrategia básica es que el enemigo podría estar mirando constantemente la distancia que tiene hacia la nave. Y cuando esa distancia es menor a 200 píxeles comienza a atacarlo:
Podríamos describir a estos dos estados del enemigo así:
Para esto deberíamos crear dos estados: un estado llamado “alejado” (que mostrará la cara feliz) y un segundo estado llamado “enojado” que disparará cada un segundo.
Estos estados se pueden crear directamente desde el menú de recetas de pilas así:
Ahora bien, ¿Cómo podríamos detectar si el enemigo y la nave están a una distancia de 200 píxeles?. Lo más sencillo es llamar a la función obtener_distancia_al_actor
y comparar el valor que te retorna contra el número 200:
let nave = this.pilas.obtener_actor_por_nombre("nave");
if (this.obtener_distancia_al_actor(nave) < 200) {
// la nave está cerca, a menos de 200 pixeles
this.estado = "enojado";
} else {
// la nave se alejó
}
Te paso el código completo para que lo puedas investigar, ten en cuenta que es solo un ejemplo, los disparos no hacen nada…
https://app.pilas-engine.com.ar/#/proyecto/8508e09d-aad1-469f-93d4-fb898bdce0a3
No detallé mucho el tema de los autómatas aquí, pero si queres investigar más está el manual y un video tutorial bastante completo en youtube.
¡Avisame cualquier cosa!
Gracias por tu ayuda Hugo