Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: vitail en Febrero 27, 2015, 04:01:46 AM

Título: Problemas con colisiones top down.
Publicado por: vitail en Febrero 27, 2015, 04:01:46 AM
Hola, no entiendo por que me da un error de que siempre cuando hago un top down shooter o lo que sea siendo top down, tenga un error donde un objeto no colisione bien con el otro objeto.

if(keyboard_check(ord("A")))
{
    x -= 3;
}
if(keyboard_check(ord("D")))
{
    x += 3;
}
if(keyboard_check(ord("W")))
{
    y -= 3;
}
if(keyboard_check(ord("S")))
{
    y += 3;
}


mi juego sera un juego parecido a the binding of isaac, osea que tendre que subir la velocidad y todo eso entonces no necesito problemas cuando suba la velocidad con una futura variable

Ya he probado con place_free(place_empty) move_contact_solid y no funciona, colisiona y se queda pegado y despues de que no colisiona bien queda como medio adentro de el solido y no colisiona bien nunca, si le quito la opcion de solido a el objeto wall no colisiona tampoco.
Título: Re:Problemas con colisiones top down.
Publicado por: n0k en Febrero 27, 2015, 12:47:46 PM
Buenos días desde Madrid. Creo que el problema es que coincide la posición de movmimiento con el bloque, con la posición de movimiento de tu personaje. Es decir, para asegurarte de que no es por eso, intenta poner un numero más bajo en la colisión, y si queda con un espacio entre tu personaje y el bloque, lo podrás mover aunque no golpee del todo, y sabrás que es por eso. Hay que ir descartando de lo más sencillo, a lo más complejo.
Ya nos comentarás como salió el experimento.  :D
Título: Re:Problemas con colisiones top down.
Publicado por: vitail en Febrero 27, 2015, 03:19:20 PM
Cita de: n0k en Febrero 27, 2015, 12:47:46 PM
Buenos días desde Madrid. Creo que el problema es que coincide la posición de movmimiento con el bloque, con la posición de movimiento de tu personaje. Es decir, para asegurarte de que no es por eso, intenta poner un numero más bajo en la colisión, y si queda con un espacio entre tu personaje y el bloque, lo podrás mover aunque no golpee del todo, y sabrás que es por eso. Hay que ir descartando de lo más sencillo, a lo más complejo.
Ya nos comentarás como salió el experimento.  :D

Ya he probado eso pero la idea que es que no quiero de que pase eso ya que queda muy feo quiero de que pegue y te puedas mover pegado a la pared y todo eso, una colision buena pues.
Título: Re:Problemas con colisiones top down.
Publicado por: Silver_light en Febrero 27, 2015, 03:33:08 PM
Una buena forma para obtener una colision "limpia", es decir, que no quede un espacio en blanco entre la pared y el personaje, se puede hacer con un ciclo:

[GML]

if (keyboard_check(vk_right))
   repeat(3) // velocidad de movimiento
   {
      if (place_free(x+1,y))
         x++;
   }

[/GML]

Eso hace que el ciclo se repita 3 veces, moviendo al personaje instantaneamente 3 pixeles por step, verificando si en cada uno de ellos hubo o no colision, y mover en el caso de que exista espacio libre.