Unity复刻Asteroids游戏移动异常:玩家角色可左转但无法右转
问题排查及解决方案
输入层排查
- 先添加调试日志确认输入是否正常触发,修改代码如下:
if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) { _turnDirection = 1.0f; Debug.Log("左转触发"); } else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) { _turnDirection = -1.0f; Debug.Log("右转触发"); }
运行游戏按D/右箭头,如果控制台没有输出「右转触发」,说明输入被拦截:
- 检查Unity Input Manager中是否将D键、右箭头绑定了其他冲突的输入动作
- 检查是否有其他挂载在同物体/全局的脚本也在监听D键/右箭头输入,并且调用了
Event.Use()消费了输入事件
逻辑层排查
如果调试日志显示右转正常触发,说明是后续转向逻辑的问题:
- 检查
_turnDirection变量是否存在被覆盖的情况:确认这段if-else之后,有没有其他代码再次修改_turnDirection的值,比如错误的按键松开重置逻辑,会把D键赋值的-1强制改回1 - 检查转向计算逻辑是否过滤了负值:比如旋转角度计算时有没有加
Mathf.Max()之类的只保留正数的限制,或者旋转角度的区间限制只允许向左转的范围生效 - 检查角色刚体/碰撞体配置:如果右转时刚好卡模,也会出现转不动的假象,可以临时关掉角色碰撞体测试是否恢复正常
内容的提问来源于stack exchange,提问作者NASA BOI
相关产品推荐
相关产品推荐

