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; } }
关键修改说明
- 删除
Direction = "";:保留上一帧的方向状态,确保松开按键时能正确识别当前朝向。 - 新增
_has_input变量:统一判断是否有方向键按下,避免重复编写多个“按键松开”的判断逻辑。 - 统一静止状态处理:用
switch语句替代零散的if判断,逻辑更清晰,同时覆盖所有方向的静止切换需求。 - 对齐行走/静止精灵命名:你原代码里右键、上键、左键用的是静止精灵名称,建议替换成对应的行走动画,和下键逻辑保持一致,避免动画混乱。
内容的提问来源于stack exchange,提问作者TIredGameDev
相关产品推荐
相关产品推荐

