ioncrisneamtu
Member
Hello! I'm working on an rpg and I don't know how to stop the diagonal movement.
I use this code link:
///GET INPUTS
up = keyboard_check(ord("W"));
down = keyboard_check(ord("S"));
right = keyboard_check(ord("D"));
left = keyboard_check(ord("A"));
///INT MOVEMENT
hMove = (right-left) * spd;
vMove = (down - up) * spd;
///HORIZONTAL COLLISION
if(place_meeting( x + hMove, y, oSolid))
{
while(!place_meeting(x + sign(hMove),y,oSolid))
x += sign(hMove);
hMove = 0;
}
///VERTICAL COLLISION
if(place_meeting( x, y + vMove , oSolid))
{
while(!place_meeting(x ,y+sign(vMove),oSolid))
y += sign(vMove);
vMove = 0;
}
///MOVE
x += hMove;
y += vMove;
What can I do to move the player only on 4 ways?
I use this code link:
///GET INPUTS
up = keyboard_check(ord("W"));
down = keyboard_check(ord("S"));
right = keyboard_check(ord("D"));
left = keyboard_check(ord("A"));
///INT MOVEMENT
hMove = (right-left) * spd;
vMove = (down - up) * spd;
///HORIZONTAL COLLISION
if(place_meeting( x + hMove, y, oSolid))
{
while(!place_meeting(x + sign(hMove),y,oSolid))
x += sign(hMove);
hMove = 0;
}
///VERTICAL COLLISION
if(place_meeting( x, y + vMove , oSolid))
{
while(!place_meeting(x ,y+sign(vMove),oSolid))
y += sign(vMove);
vMove = 0;
}
///MOVE
x += hMove;
y += vMove;
What can I do to move the player only on 4 ways?