A
azzzanadra
Guest
ok guys, i have made code for knockback, however when the player is knocked back he enters the wall, something wrong with my collision, can someone check?
//horizontal collision
if (place_meeting(x+hsp,y,obj_wall))
{
while(!place_meeting(x+sign(hsp),y,obj_wall))
{
x +=sign(hsp)
}
hsp = 0
}
x += hsp;
//knockback
if (place_meeting(x,y,obj_enemy))
{
if obj_enemy.dir = -1
{
hit = 1
direction_of_attack = 1
}
}
else
{
hit = 0
}
if (place_meeting(x,y,obj_enemy))
{
if obj_enemy.dir = 1
{
hit = 1
direction_of_attack = -1
}
}
else
{
hit = 0
}
//knockback
if (hit = 1)
{
speed = -7
hsp = 0
alarm [0] = 20
key_right = false
key_left = false
}
else
{
key_right = keyboard_check(vk_right)
key_left = -keyboard_check(vk_left)
key_jump = keyboard_check_pressed(vk_space)
hsp = move * movespeed
}
//horizontal collision
if (place_meeting(x+hsp,y,obj_wall))
{
while(!place_meeting(x+sign(hsp),y,obj_wall))
{
x +=sign(hsp)
}
hsp = 0
}
x += hsp;
//knockback
if (place_meeting(x,y,obj_enemy))
{
if obj_enemy.dir = -1
{
hit = 1
direction_of_attack = 1
}
}
else
{
hit = 0
}
if (place_meeting(x,y,obj_enemy))
{
if obj_enemy.dir = 1
{
hit = 1
direction_of_attack = -1
}
}
else
{
hit = 0
}
//knockback
if (hit = 1)
{
speed = -7
hsp = 0
alarm [0] = 20
key_right = false
key_left = false
}
else
{
key_right = keyboard_check(vk_right)
key_left = -keyboard_check(vk_left)
key_jump = keyboard_check_pressed(vk_space)
hsp = move * movespeed
}