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

Game Maker运行WASD移动代码触发DoAdd:2:undefined value报错

问题原因
  • 你代码中使用的phy_position_x、phy_position_y是Game Maker物理引擎专属的内置变量,只有你给当前实例绑定的对象开启了「使用物理」属性时,这两个变量才会被系统初始化赋值
  • 你当前没有给对应对象开启物理功能,导致phy_position_x、phy_position_y都是未定义值,对未定义值执行加减运算时就会触发DoAdd:2:undefined value报错
解决方案

根据你的开发需求选择对应方案即可:

  • 方案1:不需要物理引擎的普通移动
    直接把代码里的phy_position_x、phy_position_y替换成普通实例坐标变量x、y即可,修改后代码如下:
if (keyboard_check(ord("W"))) {   
    y -= 4;
}
if (keyboard_check(ord("A"))) {   
    x -= 4; 
}
if (keyboard_check(ord("S"))) {   
    y += 4;
}
if (keyboard_check(ord("D"))) {   
    x += 4;
}
  • 方案2:确实需要使用物理引擎实现移动
    首先给对应对象开启物理属性:打开对象编辑界面,勾选「物理」分类下的使用物理选项。注意不要直接修改phy_position_x/phy_position_y,这种硬改坐标的方式不符合物理引擎的运作逻辑,推荐用phy_speed_x/phy_speed_y实现物理移动,示例代码如下:
// 先重置速度避免累加
phy_speed_x = 0;
phy_speed_y = 0;
if (keyboard_check(ord("W"))) {   
    phy_speed_y = -4;
}
if (keyboard_check(ord("A"))) {   
    phy_speed_x = -4; 
}
if (keyboard_check(ord("S"))) {   
    phy_speed_y = 4;
}
if (keyboard_check(ord("D"))) {   
    phy_speed_x = 4;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:57:02