AEstoy empezando a probar colisiones perfectas en un juego de plataformas, pero el problema es que el copdigo no funciona bien, lo sque de un ejemplo con vista RPG, pero me lleve la sorpresa que da probolemas en un juego de plataformas, al emepezar mi juego empiezo a caminar y todo bien, pero cuando salto y vuelvo a caer al suelo no camina mas, se queda inmovil unicamente salta, se mueve pero en el aire, cada vez que cae al suelo no se mueve.
El codigo del personaje en el evento Left lo tengo asi:
for(i=0; i<(velocidad+1) i+=1) {
if place_free(x-i,y) X=i else break
} x-=X
en el evento right del personaje lo tengo asi:
for(i=0; i<(velocidad+1) i+=1) {
if place_free(x+i,y) X=i else break
} x+=X
la variable es : velocidad=3
El contacto del personaje con el suelo es:
if !place_free(x-hspeed,y) {move_contact_solid(direction,hspeed) ; hspeed=0}
if !place_free(x+hspeed,y) {move_contact_solid(direction,hspeed) ; hspeed=0}
if (vspeed>0 and !place_free(x,y+vspeed)) {move_contact_solid(270,abs(vspeed));vspeed=0}
if (vspeed<0 and !place_free(x,y+vspeed)) {move_contact_solid(90,abs(vspeed));vspeed=0}
El evento step del personaje lo tengo asi:
if place_free(x+0,y+1)
gravity_direction=270
gravity=0.5
El problema esta en el evento STEP, lo que pasa es que al colisionar con el piso la gravedad sigue 0.5
Cambia por este codigo
if place_free(x,y+1) {gravity=0.5} else {gravity=0}