Error al eliminar un un actor

Hola, estoy haciendo un tutorial de un juego Top-Down en Pilas, y estoy teniendo un problema con el método eliminar de un actor.

Tengo un actor que esta constantemente buscando otros actores que se encuentren cerca de él, si lo encuentra, lo marca como objetivo y lo apunta. Resulta que si ese actor al que marco como objetivo se lo elimina con el metodo .eliminar(), el motor tira un error automaticamente.

Codigo del actor que busca objetivos:

Codigo que utilizo al eliminar al actor objetivo:
image

En este caso, el actor objetivo debe ser eliminado cuando colisiona con otro actor.

El error en cuestion:

Alguna idea?

Desde ya muchas gracias.
Saludos!

Hola @Santiago_Arguello, ante todo bienvenido al foro!!!

Estuve intentando replicar el problema y creo que ya sé como resolverlo. Efectivamente es un bug de pilas, pero se puede evitar con un pequeño truco:

El problema no está en eliminar el actor, sino que inmediatamente después de eso pilas sigue queriendo acceder al actor “objetivo” que fue eliminado. Así que lo que podrías hacer para evitar el error es cambiar este código:

actualizar() {
  if (this.objetivo)
    [...]
}

Por este otro:


actualizar() {
  if (this.objetivo && this.objetivo.esta_vivo())
    [...]
}

Acá hice una prueba intentando replicar tu ejemplo y veo que funciona bien, si quito esa comprobación de que el actor esté vivo también me aparece el mismo error que a vos:

https://app.pilas-engine.com.ar/#/proyecto/27387a87-d1dd-4212-ad03-4173333ad10f

Avisame si te sirve esta solución, yo paralelamente voy a intentar mejorar el mensaje de error de pilas para que sea más claro.

¡Abrazo!

1 me gusta

Perfecto Hugo, eso lo soluciono.

Muchas gracias!

1 me gusta