使用Unity新Input System实现玩家移动,相关脚本是否存在错误?
排查清单
脚本层面可优化/检查点
- 冗余变量
movementZ没有用到,不会影响运行但可以直接删除 - 公有的
speed初始值设置为100偏大,若Rigidbody质量为默认值1kg会导致移动速度过快,建议先调整到5~10区间测试 - 检查挂载脚本的GameObject上的Rigidbody组件配置:不要勾选
Is Kinematic,不要锁定X、Z轴的移动权限,否则施加的作用力不会生效
Input System 配置检查点(即使你确认配置无误,也建议逐一核对)
- 确认挂载移动脚本的Player对象上同时挂载了
Player Input组件 - 确认
Player Input组件的Actions字段已绑定你创建的Input Action Asset资源 - 确认Input Action Asset中存在命名为
Move的Action,且该Action的类型设置为Value,控制类型为Vector2,已经绑定了对应输入设备的按键(比如键盘的WASD、方向键) - 确认
Player Input组件的Behavior属性设置为Send Messages,只有该模式下Input System才会自动调用脚本中命名为OnMove的回调方法 - 如果你将
Behavior设置为Invoke Unity Events,需要手动在Player Input的事件列表中,将Move事件的回调绑定到你脚本的OnMove方法
快速定位问题方法
在OnMove方法中添加调试代码:Debug.Log(movementVector);,运行游戏后按下移动按键,观察控制台输出:
- 有正常的坐标值输出:说明Input System配置正常,问题出在Rigidbody或移动逻辑层面
- 无任何输出:说明Input System的配置仍然存在错误
内容的提问来源于stack exchange,提问作者RealDevMashup
相关产品推荐
相关产品推荐

