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
Cordialmente Jodidox!

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]

#2 Febrero 26, 2016, 12:52:13 AM Ultima modificación: Febrero 26, 2016, 01:24:35 AM por jodidox
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.
Cordialmente Jodidox!