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

Unity3D FPS项目添加旋转代码后无法水平转动视角如何解决?

问题修复方案

根本原因

你遇到的问题是两点操作不匹配教程要求导致的:

  1. 脚本挂载位置错误
  2. 代码执行顺序逻辑有误
    当MouseLook脚本挂载到玩家根对象而非主相机时,transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);会强制把玩家的Y轴旋转重置为0,直接覆盖掉PlayerBody.Rotate产生的水平旋转效果,因此无法左右转动视角。

修复步骤

1. 调整脚本挂载位置

  • 将MouseLook脚本从玩家根对象取下,挂载到主相机上
  • 把玩家根对象拖入Inspector面板中MouseLook脚本的PlayerBody参数插槽
  • 确认主相机是玩家根对象的子物体,保证相机跟随玩家移动

2. 调整代码执行顺序

将Update函数内的两行代码交换顺序,先执行玩家身体的水平旋转,再执行相机的俯仰旋转,修改后的代码片段如下:

xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation,-90,90f);

// 先执行玩家身体水平旋转
PlayerBody.Rotate(Vector3.up * mouseX);
// 再执行相机上下俯仰
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);

输入报错补充修复

如果出现旧输入系统相关报错,按以下操作处理:

  • 打开Project Settings > Player > Active Input Handling
  • 选择Both选项,兼容新旧两套输入系统即可

内容的提问来源于stack exchange,提问作者MUCHUAN SU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:45:04