Hola Makeros, estoy teniendo un problema que no puedo resolver, necesito saber como comprobar que una instancia esta en el piso para que pueda saltar en una room física, los efectos que consigo con apply_impulse estan muy bien, solo que no puedo comprobar de manera correcta que esta en el piso. place_free y test_overlap fueron algunos de mis intentos, la primera no la pude hacer funcionar y la ultima creo no entender el funcionamiento. Alguien sabe cual es la manera adecuada? yo pense hacerlo con variables y listo, o sea, toco el piso puedesaltar=1, saltó puedesaltar=0, funciona, solo que el piso de mi juego es igual a mis paredes y mi techo, tendria que cambiar todos los objetos. Ayuda porfa!
Si estás trabajando con objetos con física, debes usar funciones del motor de física. place_free no es una función del motor de física, sino del motor "estándar" de GM, por eso no funciona.
El funcionamiento de physics_test_overlap se explica en el manual y es realmente sencillo:
physics_test_overlap(xpos, ypos, angle, obj);
xpos & ypos: El punto en el que quieres revisar si hay colisión. Hay que tener presente que el código se ejecuta desde una instancia, y esa instancia tiene sus variables x e y. Así que si usas x y y + 30 como argumentos, estás indicándole que revise una colisión en la parte baja de la instancia (que es lo que generalmente se hace para validar un salto)
angle: La función te permite evaluar si hay colisión considerando un ángulo de rotación para la instancia. Se puede usar 0, o phy_rotation, o algún ángulo en particular (aunque no creo que sea necesario dar un ángulo fijo, excepto 0).
obj: El objeto contra el que quieres revisar colisión, en este caso, el piso.
Cuando estás "pisando terrenos desconocidos" en GML, lo mejor es recurrir al manual.
Muy claro. Pasa a veces que el traductor manda cualquier cosa en el manual y se complica. Pude resolverlo con la funcion que amaboemente explicaste. Mil gracias