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

GML中Create事件定义的布尔量在Step事件中失效求助

GMS2贪吃蛇WASD无响应的原因解析

核心问题出在GMS2事件的执行时机和keyboard_check_pressed函数的特性上:

  1. Create事件的执行逻辑
    Create事件只在对象实例被创建的第一帧执行一次。你在这里定义Right/Left/Up/Down变量时,keyboard_check_pressed只会检测创建瞬间的按键状态——这时候你还没来得及按下WASD,所以这些变量会被赋值为false,之后再也不会更新。Step事件里一直用这个初始的false值判断,自然触发不了移动逻辑。

  2. Step事件的执行逻辑
    Step事件是每游戏帧都会执行一次的事件。把按键检测移到这里后,每帧都会重新调用keyboard_check_pressed检查当前的按键状态:只要你在某一帧按下WASD对应按键,变量就会被赋值为true,进而触发移动的alarm逻辑,蛇就能正常响应输入了。

  3. 为什么数组和snakeSpeed没问题?
    因为这些是静态配置(比如蛇的速度、初始身体数组),只需要在创建时初始化一次就够了,不需要每帧更新,所以放在Create事件里完全没问题。但按键状态是动态变化的,必须每帧实时检测,所以必须放在Step事件中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:37:33