C
CptLAN
Guest
Hi i'm actually making a top-down RPG where i made my own movement & collision script, but the problem is that the player get the tendency to get stuck in walls (only about 5-10 pixels) where i need to go in the opposite direction to unstuck, it uses vspeed and hspeed for the movement to be smoother. The player sprite uses a sprite of 50*50 but is smaller than it.
Here's the codes:
w_flag = false
s_flag = false
a_flag = false
d_flag = false
//movements
if keyboard_check(ord('W'))
{if place_free(x,y-global.pl_move_speed)
{vspeed = -global.pl_move_speed
w_flag = true}
else if place_free(x,y-1)
{vspeed = -1
w_flag = true}
else
{w_flag = false}}
else if keyboard_check(ord('S'))
{if place_free(x,y+global.pl_move_speed)
{vspeed = global.pl_move_speed
s_flag = true}
else if place_free(x,y+1)
{vspeed = 1
s_flag = true}
else
{s_flag = false}}
if w_flag = false && s_flag = false
{vspeed = 0}
if keyboard_check(ord('A'))
{if place_free(x-global.pl_move_speed,y)
{hspeed = -global.pl_move_speed
a_flag = true}
else if place_free(x-1,y)
{hspeed = -1
a_flag = true}
else
{a_flag = false}}
else if keyboard_check(ord('D'))
{if place_free(x+global.pl_move_speed,y)
{hspeed = global.pl_move_speed
d_flag = true}
else if place_free(x+1,y)
{hspeed = 1
d_flag = true}
else
{d_flag = false}}
if a_flag = false && d_flag = false
{hspeed = 0}
Hope you'll help me, ty. :]
Here's the codes:
w_flag = false
s_flag = false
a_flag = false
d_flag = false
//movements
if keyboard_check(ord('W'))
{if place_free(x,y-global.pl_move_speed)
{vspeed = -global.pl_move_speed
w_flag = true}
else if place_free(x,y-1)
{vspeed = -1
w_flag = true}
else
{w_flag = false}}
else if keyboard_check(ord('S'))
{if place_free(x,y+global.pl_move_speed)
{vspeed = global.pl_move_speed
s_flag = true}
else if place_free(x,y+1)
{vspeed = 1
s_flag = true}
else
{s_flag = false}}
if w_flag = false && s_flag = false
{vspeed = 0}
if keyboard_check(ord('A'))
{if place_free(x-global.pl_move_speed,y)
{hspeed = -global.pl_move_speed
a_flag = true}
else if place_free(x-1,y)
{hspeed = -1
a_flag = true}
else
{a_flag = false}}
else if keyboard_check(ord('D'))
{if place_free(x+global.pl_move_speed,y)
{hspeed = global.pl_move_speed
d_flag = true}
else if place_free(x+1,y)
{hspeed = 1
d_flag = true}
else
{d_flag = false}}
if a_flag = false && d_flag = false
{hspeed = 0}
Hope you'll help me, ty. :]