Respuesta al foro de pilas
Hola @BetoCR, ¡Bienvenido al foro de pilas!
Estuve mirando las capturas de pantalla que nos enviaste y creo que tengo una forma de implementarlas, la idea que se me ocurrió es algo así:
Primero deberías tener un actor que sea el punto de origen de la trayectoria (en mi caso un actor fantasma) y luego un actor que sirva de punto para representar la linea de trayectoria (un actor verde):

Luego, para empezar a simular la trayectoria, cloné el actor verde una 30 veces y guardé todas las copias en una lista:
this.puntos = [];
for (let i = 0; i < 30; i++) {
this.puntos.push(this.pilas.clonar("actor_verde"));
}
Con ese código los 30 actores van a estar todos en la misma coordenada, así que el siguiente paso que di fue:
- obtener el ángulo de rotación que se forma entre el actor “fantasma” y el puntero del mouse con la función
this.pilas.obtener_angulo_entre_puntos.
- recorrer la lista de
puntos (los actores verdes) y por cada uno de ellos aplicarles la coordenada x e y:
Con eso, ya se formó una linea que va desde el actor “fantasma” hasta la posición del mouse.
Te paso el código de este ejemplo, el código más importante está en el actor fantasma:
ver en el editor
Luego, para que la trayectoria tenga en cuenta las colisiones con las figuras físicas adapté el código de posicionamiento de los actores. Hice que antes de aplicarse la posición del actor se busque si en ese punto hay un colisión con una plataforma o no. Si hay una colisión, cambia la dirección de posición:
Te paso el código modificado, agregué una función llamada hay_un_actor_con_figura_en y el código de la función que posiciona los actores:
ver en el editor
Ah, por cierto, vas a notar que si reducís el tamaño del actor punto el efecto va a quedar mucho mejor, porque la colisión con las paredes se hace desde el centro del actor. Cuando más pequeño sea el actor menos se notará el “solapado” de la imagen y el borde de la plataforma.
También vas a notar que ajustando la rotación del actor y convirtiéndolo en un guión te puede llegar a quedar bastante parecido a tu segunda captura de pantalla:
ver en el editor
¡Avisanos cualquier cosa!, ¡abrazo grande!