Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: jodidox en Febrero 25, 2016, 07:59:47 PM

Título: DETECTAR COLISION
Publicado por: jodidox en Febrero 25, 2016, 07:59:47 PM
Muy buenas a todos,

Hace poco utilice el siguiente código place_meeting(x,y+sign(vy),obPared) para detectar la colisión entre dos objetos, lo utilizo para que cuando el player colisione con la pared esta aumente la image_index una cada golpe, pero el problema es que cuando golpeo la pared esta cambia de 2 sub-imágenes aveces hasta tres, no se si se deba ha que el código de la colisión esta en el evento STEP, el cual la velocidad es 60,

espero haberme hecho entender,  XD XD XD XD XD
Título: Re:DETECTAR COLISION
Publicado por: Clamud en Febrero 25, 2016, 11:33:20 PM
Seguramente los objetos están en colisión más de un step. Debería existir una variable que indique el estado de la colisión en el step anterior.

Esta es una forma
[gml]
//Create
colision_previa = false;

//Step
colision_actual = place_meeting( x,y+sign(vy), obPared );
if( colision_actual and not colision_previa )
image_index += 1;
colision_previa = colision_actual;
[/gml]

Y esta es otra forma
[gml]
//Create
colision = false;

//Step
if place_meeting( x,y+sign(vy), obPared)
{
    if( not colision )
    {
        image_index += 1;
        colision = true;
    }
}
else colision = false;
[/gml]
Título: Re:DETECTAR COLISION
Publicado por: jodidox en Febrero 26, 2016, 12:52:13 AM
No funciona como debe ser,  :-X

Puse igual, pero sigue teniendo el mismo efecto, algunas veces se pasa hasta dos sub-imagenes

EDIT: Estaba poniendo el codigo en End_Step  lo modifique a step y me ha funcionado de maravilla.