// 移动变量
var move_x = 0;
var move_y = 0;
// 检测按键事件
if (keyboard_check(ord("D")) == true or keyboard_check(vk_right)) {
    move_x += 1.5;
    image_speed = 0.5;
    sprite_index = spr_player_1_right;
}
// 检测左键
if (keyboard_check(ord("A")) == true or keyboard_check(vk_left)) {
    move_x -= 1.5;
    image_speed = 0.5;
    sprite_index = spr_player_1_left;
}
// 检测上键
if (keyboard_check(ord("W")) == true or keyboard_check(vk_up)) {
    move_y -= 1.5;
    image_speed = 0.5;
    sprite_index = spr_player_1_back;
}
// 检测下键
if (keyboard_check(ord("S")) == true or keyboard_check(vk_down)) {
    move_y += 1.5;
    image_speed = 0.5;
    sprite_index = spr_player_1
}
// 移动位置
x += move_x;
y += move_y;

// 检测碰撞事件
if (place_meeting(x + move_x, y + move_y, obj_unwalkable_object)) {
    // 当碰撞时,设置移动速度减慢
    move_speed = 1;
    // 防止继续向前移动
    move_x = 0;
} else {
    // 当没有碰撞时,恢复移动速度
    move_speed = 1.5;
}

请注意,move_and_collide函数在GameMaker Studio中已经被废弃,取而代之的是place_meeting函数。