J
Jaxon
Guest
I'm having a problem with my gml script. the objective is to when my sprite walks into the cube it moves in the same direction. but my cube travels through walls and only works when moving right, pushing the cube left results into it moving to the other side of the sprite(left to right).
My code:
create event:
[
hsp = 0;
vsp = 0;
grv = 0.3;
]
step event:
[
//Gravity
vsp = vsp + grv;
//Vertical Collision
if (place_meeting(x,y + vsp,obj_wall))
{
while (!place_meeting(x,y + sign(vsp),obj_wall))
{
y = y + sign(vsp)
}
vsp = 0;
}
y = y + vsp;
//Horizontal Collision
if (place_meeting(x + hsp,y,obj_wall))
{
while (!place_meeting(x + sign(hsp),y,obj_wall))
{
x = x + sign(hsp)
}
hsp = 0;
}
x = x + hsp;
//Push block
//moving right
if (place_meeting(x+1,y,obj_player))
{
while (place_meeting(x+1,y,obj_player))
{
x += 0.01;
}
}
//moving left
if (place_meeting(x-1,y,obj_player))
{
while (place_meeting(x+1,y,obj_player))
{
x -= 0.01;
}
}
]
Help would be greatly appreciated
My code:
create event:
[
hsp = 0;
vsp = 0;
grv = 0.3;
]
step event:
[
//Gravity
vsp = vsp + grv;
//Vertical Collision
if (place_meeting(x,y + vsp,obj_wall))
{
while (!place_meeting(x,y + sign(vsp),obj_wall))
{
y = y + sign(vsp)
}
vsp = 0;
}
y = y + vsp;
//Horizontal Collision
if (place_meeting(x + hsp,y,obj_wall))
{
while (!place_meeting(x + sign(hsp),y,obj_wall))
{
x = x + sign(hsp)
}
hsp = 0;
}
x = x + hsp;
//Push block
//moving right
if (place_meeting(x+1,y,obj_player))
{
while (place_meeting(x+1,y,obj_player))
{
x += 0.01;
}
}
//moving left
if (place_meeting(x-1,y,obj_player))
{
while (place_meeting(x+1,y,obj_player))
{
x -= 0.01;
}
}
]
Help would be greatly appreciated