T2008
Member
I'm trying to add a knock back for when player hits enemy wall (and for enemies eventually also). I've watched a few tutorials but none of them really work with my code. Below is the script for my player movement. It is 8 directional. Any ideas as to how to add a knockback into this?
Edit: I actually want to limit the knockback to collisions with enemies. Any ideas?
Edit: I actually want to limit the knockback to collisions with enemies. Any ideas?
Code:
/// @description player_movement
//-----Input Keys
//Move
move_east = (keyboard_check(vk_right)) && !(keyboard_check(vk_up)) && !(keyboard_check(vk_down));
move_north = (keyboard_check(vk_up)) && !(keyboard_check(vk_left)) && !(keyboard_check(vk_right))
move_northeast = (keyboard_check(vk_right)) && (keyboard_check(vk_up));
move_northwest = (keyboard_check(vk_left)) && (keyboard_check(vk_up));
move_south = (keyboard_check(vk_down)) && !(keyboard_check(vk_left)) && !(keyboard_check(vk_right));
move_southeast = (keyboard_check(vk_right)) && (keyboard_check(vk_down));
move_southwest = (keyboard_check(vk_left)) && (keyboard_check(vk_down));
move_west = (keyboard_check(vk_left)) && !(keyboard_check(vk_up)) && !(keyboard_check(vk_down));
//Stop
stop_east = (keyboard_check_released(vk_right));
stop_north = (keyboard_check_released(vk_up));
stop_northeast = (keyboard_check_released(vk_right)) && (keyboard_check_released(vk_up));
stop_northwest = (keyboard_check_released(vk_left)) && (keyboard_check_released(vk_up));
stop_south = (keyboard_check_released(vk_down));
stop_southeast = (keyboard_check_released(vk_right)) && (keyboard_check_released(vk_down));
stop_southwest = (keyboard_check_released(vk_left)) && (keyboard_check_released(vk_down));
stop_west = (keyboard_check_released(vk_left));
//-----Apply Movement
//Move East
if (move_east) {
//Define Direction
Direction = "Right";
//Set Sprite
player_direction_sprite_walk();
//Move Player
if (place_meeting(x+global.walking_speed,y,obj_all_solid_parent)) {
while(!place_meeting(x+sign(global.walking_speed),y,obj_all_solid_parent)) {
x+=sign(global.walking_speed);
}
global.walking_speed = 0;
}
x += global.walking_speed;
}
//Stop East
if (stop_east) {
player_direction_sprite_stopped();
}
//Move North
if (move_north) {
//Define Direction
Direction = "Up";
//Set Sprite
player_direction_sprite_walk();
//Move Player
if (place_meeting(x,y-global.walking_speed,obj_all_solid_parent)) {
while(!place_meeting(x,y-sign(global.walking_speed),obj_all_solid_parent)) {
y-=sign(global.walking_speed);
}
global.walking_speed = 0;
}
y -= global.walking_speed;
}
//Stop North
if (stop_north) {
player_direction_sprite_stopped();
}
Last edited: