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

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);
    }
}

修复步骤

  1. 修正turnSpeed初始值:代码中turnSpeed默认设为0f,即使有输入,0乘以任何值结果都是0。在Unity Inspector面板中,将挂载脚本的Vehicle对象的turnSpeed改为大于0的数值(如10f)。
  2. 替换平移为旋转逻辑:原代码用transform.Translate(Vector3.right)实现的是左右平移,并非旋转。要实现车辆转弯,需改用绕Y轴旋转的逻辑,修改Update中的旋转代码:
    // 替换原Translate的行,改为旋转
    transform.Rotate(Vector3.up, Time.deltaTime * turnSpeed * horizontalInput);
    
  3. 检查输入轴配置:打开Unity菜单栏Edit > Project Settings > Input Manager,确认Horizontal轴的绑定是否正确——默认A键对应负输入、D键对应正输入,若配置被修改会导致无响应。
  4. 验证脚本挂载状态:确保PlayerController脚本正确挂载在Vehicle对象上,且对象未被禁用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:40:01