Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Alfonsillo en Enero 28, 2015, 03:12:10 AM

Título: El objeto no se mueve en el suelo
Publicado por: Alfonsillo en Enero 28, 2015, 03:12:10 AM
Hola, estoy aprendiendo a crear videojuegos de plataforma y tengo unos problemillas con la gravedad y la colisión con el suelo.
No se usar bien el lenguaje de programación asi que en la mayoría de los eventos uso las herramientas que me propone el programa.

Cuando mi personaje choca contra el suelo no puedo moverme hacia los lados mientras lo pisa pero si puedo saltar y moverme en el aire. Se queda pegado al piso y también escala las paredes.  :o

Hasta ahora tiene estos códigos y eventos y no se que le puedo hacer (para el movimiento con WASD son todos iguales solo que cambia las direcciones).
Título: Re:El objeto no se mueve en el suelo
Publicado por: TheWood en Enero 28, 2015, 03:38:34 AM
en la colision del piso yo pongo esto (gml)

[gml]
if (!place_free(x+hspeed,y))
{
  if hspeed<=0{move_contact_solid(180,abs(hspeed))}
  if hspeed>0 {move_contact_solid(0,abs(hspeed))}
  hspeed = 0;
}

if (!place_free(x,y+vspeed))
{
  if vspeed<=0 {move_contact_solid(90,abs(vspeed))}
  if vspeed>0 {move_contact_solid(270,abs(vspeed))}
  vspeed = 0;
}

if (!place_free(x+hspeed,y+vspeed))
{
  hspeed = 0;
};
[/gml]

aparte en la accion de la gravedad pusiste mucha
yo sugiero usar 0.3 o 0.4

prueba con eso y me dices  :D
Título: Re:El objeto no se mueve en el suelo
Publicado por: Alfonsillo en Enero 28, 2015, 05:15:47 PM
Coloque eso en la colision y le baje la gravedad, pero igual sigue chocando con el piso y no se mueve cuando lo choca :(
Título: Re:El objeto no se mueve en el suelo
Publicado por: nyan.zhall en Enero 28, 2015, 06:07:54 PM
Creo  que es porque no usas bien la gravedad. Intenta poner  esto en la acción step del personaje:

if(place_free(x,y+1)) //si hay espacio libre abajo del personaje que haya gravedad
{
  gravity = 0.5 //la gravedad es de 0.5
}
else //en otro caso, si no hay espacio libre
{
  gravity = 0 //que la gravedad sea 0
}
gravity_direction=270
/*la gravedad sera hacia abajo, donde esta acostumbrado en los juegos de plataformas, pon 90 si quieres que la gravedad sea hacia arriba*/

y esto en la acción de colisión:

move_contact_solid(direction,12)
vspeed=0
Título: Re:El objeto no se mueve en el suelo
Publicado por: Alfonsillo en Enero 30, 2015, 01:47:37 AM
Gracias, eso si me funciono bien y lo entendí super.
Ahora el monito solo camina por las paredes pero supongo que basta con que cambie el objeto :)
Título: Re:El objeto no se mueve en el suelo
Publicado por: Alfonsillo en Enero 30, 2015, 04:26:20 AM
Me equivoque :(
¿Como hago para que no camine por las paredes cuando las toca?
Título: Re:El objeto no se mueve en el suelo
Publicado por: TheWood en Enero 31, 2015, 10:38:25 PM
esto ami me sirve :D,espero que te funcione