You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GameMaker动画脚本问题:松开下键后仍播放行走动画

GameMaker动画脚本问题:松开方向键后无法切换到静止精灵

问题根源

你代码里的Direction = "";会在每帧清空方向变量,导致松开下键时,后续判断Direction == "Down"的条件永远不成立,自然没法切换到静止的CaseyDown精灵。

修正后的代码

x = PlayerObject.x;
y = PlayerObject.y;

// 用变量标记是否有方向键输入,避免每帧重置方向状态
var _has_input = false;

if (keyboard_check(vk_down)) {
    Direction = "Down";
    sprite_index = CaseyDownWalk;
    _has_input = true;
}
else if (keyboard_check(vk_right)) {
    Direction = "Right";
    sprite_index = CaseyRightWalk; // 替换成你的右键行走动画精灵
    _has_input = true;
}
else if (keyboard_check(vk_up)) {
    Direction = "Up";
    sprite_index = CaseyUpWalk; // 替换成你的上键行走动画精灵
    _has_input = true;
}
else if (keyboard_check(vk_left)) {
    Direction = "Left";
    sprite_index = CaseyLeftWalk; // 替换成你的左键行走动画精灵
    _has_input = true;
}

// 无按键输入时,根据当前方向切换静止精灵
if (!_has_input) {
    switch(Direction) {
        case "Down":
            sprite_index = CaseyDown;
            break;
        case "Right":
            sprite_index = CaseyRight; // 替换成你的右键静止精灵
            break;
        case "Up":
            sprite_index = CaseyUp; // 替换成你的上键静止精灵
            break;
        case "Left":
            sprite_index = CaseyLeft; // 替换成你的左键静止精灵
            break;
    }
}

关键修改说明

  1. 删除Direction = "";:保留上一帧的方向状态,确保松开按键时能正确识别当前朝向。
  2. 新增_has_input变量:统一判断是否有方向键按下,避免重复编写多个“按键松开”的判断逻辑。
  3. 统一静止状态处理:用switch语句替代零散的if判断,逻辑更清晰,同时覆盖所有方向的静止切换需求。
  4. 对齐行走/静止精灵命名:你原代码里右键、上键、左键用的是静止精灵名称,建议替换成对应的行走动画,和下键逻辑保持一致,避免动画混乱。

内容的提问来源于stack exchange,提问作者TIredGameDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:57:05