quiero hacer que mi player se deslize pero no logro hacerlo, he hecho esto:
//Left, Right and Slide movements.
if(skey && rkey && slide == false || skey && lkey && slide == false)
{
slide = true;
}
if(slide == true)
{
hsp = sign(hsp) * slidespeed;
alarm[0] = 5;
sprite_index = spr_player_slide;
}
if(rkey && slide == false)
{
hsp = movespeed;
image_xscale = 1;
}
if(rkey && place_meeting(x,y+1,oSolid) && slide == false)
{
sprite_index = sPlayer_run;
image_speed = .2
} else if(!place_meeting(x,y+1,oSolid))
{
sprite_index = sPlayer_Jump;
} else if(!rkey && !lkey && place_meeting(x,y+1,oSolid)){
sprite_index=sPlayer_idle
}
if(lkey && slide == false)
{
hsp = -movespeed;
image_xscale = -1;
}
if(lkey && place_meeting(x,y+1,oSolid) && slide == false)
{
sprite_index = sPlayer_run;
image_speed = .2
} else if(!place_meeting(x,y+1,oSolid))
{
sprite_index = sPlayer_Jump;
} else if(!rkey && !lkey && place_meeting(x,y+1,oSolid)){
sprite_index=sPlayer_idle
}
if(!rkey && !lkey && slide == false || rkey && lkey && slide == false)
{
hsp= 0;
}
todo sirve bien, hasta que llega el momento donde ya el alarm toca darle slide a falso pero sigue moviendose hacia un lado y cuando aprietas una tecla como ASDW aunque este en falso daña la animacion de slide y quiero arreglar esas dos cosas y ya no encuentro mas como resolverlo
gracias de antemano.
EDITO:
ahora el codigo lo intente asi y es igual.
if(skey && rkey && sprite_index != spr_player_slide || skey && lkey && sprite_index != spr_player_slide)
{
slide = true;
}
if(slide == true)
{
hsp = sign(hsp) * slidespeed;
alarm[0] = 5;
sprite_index = spr_player_slide;
}
if(rkey && sprite_index != spr_player_slide)
{
hsp = movespeed;
image_xscale = 1;
}
if(rkey && place_meeting(x,y+1,oSolid) && sprite_index != spr_player_slide)
{
sprite_index = sPlayer_run;
image_speed = .2
} else if(!place_meeting(x,y+1,oSolid))
{
sprite_index = sPlayer_Jump;
} else if(!rkey && !lkey && place_meeting(x,y+1,oSolid)){
sprite_index=sPlayer_idle
}
if(lkey && sprite_index != spr_player_slide)
{
hsp = -movespeed;
image_xscale = -1;
}
if(lkey && place_meeting(x,y+1,oSolid) && sprite_index != spr_player_slide)
{
sprite_index = sPlayer_run;
image_speed = .2
} else if(!place_meeting(x,y+1,oSolid))
{
sprite_index = sPlayer_Jump;
} else if(!rkey && !lkey && place_meeting(x,y+1,oSolid)){
sprite_index=sPlayer_idle
}
if(!rkey && !lkey && slide == false || rkey && lkey && slide == false)
{
hsp= 0;
}