Unity输入管理器实现车辆旋转无响应问题求助
Unity车辆旋转控制无响应问题排查与修复
问题背景
按Unity官方课程编写代码,预期通过A/D键控制名为“Vehicle”的GameObject旋转。修改前代码可正常响应turnSpeed参数调整;添加Input.GetAxis("Horizontal")后,编译器无报错,但A/D键无响应,调整turnSpeed也无效。已尝试重启Unity、重建代码文件,问题未解决。
修改前代码
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float speed = 10f; public float turnSpeed = 0f; void Start() { } void Update() { transform.Translate(Vector3.forward * Time.deltaTime * speed); transform.Translate(Vector3.right * Time.deltaTime * turnSpeed); } }
修改后代码
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float speed = 10f; public float turnSpeed = 0f; public float horizontalInput; void Start() { } void Update() { horizontalInput = Input.GetAxis("Horizontal"); transform.Translate(Vector3.forward * Time.deltaTime * speed); transform.Translate(Vector3.right * Time.deltaTime * turnSpeed * horizontalInput); } }
修复步骤
- 修正
turnSpeed初始值:代码中turnSpeed默认设为0f,即使有输入,0乘以任何值结果都是0。在Unity Inspector面板中,将挂载脚本的Vehicle对象的turnSpeed改为大于0的数值(如10f)。 - 替换平移为旋转逻辑:原代码用
transform.Translate(Vector3.right)实现的是左右平移,并非旋转。要实现车辆转弯,需改用绕Y轴旋转的逻辑,修改Update中的旋转代码:// 替换原Translate的行,改为旋转 transform.Rotate(Vector3.up, Time.deltaTime * turnSpeed * horizontalInput); - 检查输入轴配置:打开Unity菜单栏
Edit > Project Settings > Input Manager,确认Horizontal轴的绑定是否正确——默认A键对应负输入、D键对应正输入,若配置被修改会导致无响应。 - 验证脚本挂载状态:确保PlayerController脚本正确挂载在Vehicle对象上,且对象未被禁用。
内容的提问来源于stack exchange,提问作者ILLIA Istomin
相关产品推荐
相关产品推荐

