Step Event:
#region Movement
var key_left = keyboard_check(ord("A"));
var key_right = keyboard_check(ord("D"));
var key_up = keyboard_check(ord("W"));
var key_down = keyboard_check(ord("S"));
var key_run = keyboard_check(vk_shift);
moving = key_left || key_right || key_up || key_down;
movespeed = 0.2; // Walking speed
if (key_run && moving && sta > 0) {
movespeed *= 2;
}
var speed_adjust = (key_left || key_right) && (key_up || key_down) ? (sqrt(2) / 2) : 1;
if (key_left && !place_meeting(x - movespeed * speed_adjust, y, obj_collisions)) {
x -= movespeed * speed_adjust;
sprite_index = spr_player_left;
facing_direction = "left";
} else if (key_right && !place_meeting(x + movespeed * speed_adjust, y, obj_collisions)) {
x += movespeed * speed_adjust;
sprite_index = spr_player_right;
facing_direction = "right";
}
if (key_up && !place_meeting(x, y - movespeed * speed_adjust, obj_collisions)) {
y -= movespeed * speed_adjust;
sprite_index = spr_player_up;
facing_direction = "up";
} else if (key_down && !place_meeting(x, y + movespeed * speed_adjust, obj_collisions)) {
y += movespeed * speed_adjust;
sprite_index = spr_player_down;
facing_direction = "down";
}
image_speed = moving ? (key_run && sta > 0 ? 0.3 : 0.15) : 0;
#endregion