pilas-engine

error de colision con figuras fisicas

hola queria notificar sobre este error de colision
estaba haciendo un juego plataformas pero cuando el jugador choca contra un actor/pared este lo “atraviesa” un poco, nada importante, pero si el jugador salta se engancha al actor/pared y puede llegar a escalarlo sin importar que tan grande sea la pared como se ve en este ejemplo que hice
https://app.pilas-engine.com.ar/#/proyecto/a5cd7913-e676-44d7-a399-51c5e228229a

pienso que ademas de ser algo que se ve extraño o verse mal puede ser aprovechado para intentar hacer trampas en un juego, como en este ejemplo de pilas donde se ve que se puede llegar a la bomba sin tener que montarse sobre la plataforma que se mueve

y en este otro ejemplo de pilas puede usarse para no caer y y asi no perder

he estado probando el programa y queria felicitar al creador, esta muy chulo
me gustaria que arreglasen este error, es el unico problema que le veo, lo demas me ha gustado mucho :blush:

¡Hola @Penelope_Vanessa !, es muy interesante tu consulta, de hecho yo no había notado que se podía hacer eso de saltar usando las paredes en los juegos de plataformas, me dejaste pensando en formas de resolverlo en la próxima versión.

Mientras tanto, te comento una estrategia que puede servir en tu juego para evitar que el jugador rebote en las paredes y las atraviese. Lo que podrías usar es algo llamado sensores, la idea del sensor es que te permite prohibir algunos movimientos o acciones “detectando” el escenario u otros actores.

Por ejemplo, comencemos por el salto. Lo ideal es que un personaje solo pueda saltar si tiene los pies en el suelo. Para eso, lo que podrías hacer es agregar un sensor en el actor así:

Asegurate de ponerle un nombre a los sensores, como “pies” y también colocarlo en la parte inferior del actor, sin que llegue a los bordes horizontales para que no pueda “pisar” las paredes.

Luego, en el código, tendrías que obtener el sensor y detectar si el sensor está en contacto con el suelo. Y solo en ese caso, si el sensor está en contacto con el suelo, le deberías permitir saltar:

Es decir, si el actor no está tocando el suelo ni siquiera vamos a leer el control hacia arriba o impulsar al actor. Solo vamos a considerar esas lineas de código si toca el suelo.

Con ese código, vas a notar que el efecto de salto queda muy bien, aunque nos falta resolver el tema de las paredes. Te paso el ejemplo de cómo quedaría hasta ahora:

https://app.pilas-engine.com.ar/#/proyecto/93940760-54cd-45bd-a986-389f0a0c8a10

Ahora, vamos con el tema de las paredes y el salto: el desafío aquí es evitar que el actor pueda sobre-pasar un objeto. Esto sucede porque pilas te permite hacer movimientos (como x = x + 5 ) y luego “corrige” la posición de los actores y la física para evitar que los actores aparezcan uno arriba del otro. Ese instante donde aparecen solapados se lo que da problemas como decías.

Así que para evitar que los actores se solapen también se pueden usar sensores. Por ejemplo podrías crear un sensor a la derecha y a la izquierda del actor:

y luego, con estos sensores, modificar el código para que solo se pueda ir hacia los costados si no hay colisiones con otros actores.

Por ejemplo, si queremos que el actor no pueda solaparse con una pared que aparece a la derecha podríamos escribir este código:

Notá que el código es igual al que tenía tu ejemplo, solo que agregué el acceso al sensor y luego en la linea 19 coloqué una condición: “el actor solo se podrá mover a la derecha si no hay nada colisionando con el sensor de la derecha”.

Ahora, este código se podría mejorar mucho. Me imagino que en tu juego habrá objetos que deberán funcionar como paredes y otros comos enemigos o recolectables. Si es así, tendrías que usar etiquetas para reconocer si el actor que toca el sensor se tiene que poder sobre-pasar o no.

Te envío la versión modificada con los sensores, ojalá te sirva!!! y avisanos cualquier cosa.

Abrir este proyecto en el editor de pilas