Unity 2021.3.5中C#玩家移动脚本Vertical输入(W、S)失效求助
Unity玩家移动Vertical输入失效的排查方案
1. 检查代码中的Vertical轴调用
确保你在代码中正确调用了Vertical输入轴,拼写必须完全匹配(区分大小写):
float horizontalInput = Input.GetAxis("Horizontal"); float verticalInput = Input.GetAxis("Vertical"); // 注意是大写V开头的"Vertical"
同时要确认移动逻辑中用到了verticalInput,比如构建移动向量时要包含Z轴(假设是3D场景):
Vector3 moveDirection = new Vector3(horizontalInput, 0f, verticalInput); moveDirection = transform.TransformDirection(moveDirection); // 转为本地空间 // 后续用CharacterController.Move或Rigidbody.AddForce等方法应用移动
如果代码里只用到了Horizontal的数值,那W/S键自然不会有反应。
2. 验证Unity输入管理器的设置
打开Edit > Project Settings > Input Manager,找到Vertical轴条目,检查以下设置:
- Positive Button:确认绑定的是
w - Negative Button:确认绑定的是
s - Gravity和Sensitivity:数值是否正常(默认Gravity 3,Sensitivity 3即可)
如果Vertical轴被误修改或删除,直接点击右上角的Reset按钮恢复默认设置。
3. 排查其他干扰因素
- 检查是否有其他脚本监听了W/S键的输入,导致输入被拦截
- 如果使用了第三方输入系统(比如Input System包),要确认没有混用旧的Input Manager API,两种输入系统不能同时生效
- 测试场景中是否有碰撞体阻挡了角色的前后移动,导致视觉上没反应
内容的提问来源于stack exchange,提问作者DatBoiChonkey
相关产品推荐
相关产品推荐

