Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: J.E.A en Julio 14, 2010, 05:24:12 PM

Título: Problema con colision perfecta
Publicado por: J.E.A en Julio 14, 2010, 05:24:12 PM
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



Título: Re: Problema con colision perfecta
Publicado por: 3dgeminis en Julio 25, 2010, 12:04:02 AM
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}