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

FPS玩家相机无法左右转向问题求助

问题修复方案

你的代码核心问题在于两次单独给cam.eulerAngles赋值,第二次赋值Vector3.right * mY会完全覆盖掉之前设置的Y轴旋转,导致相机无法左右转向。另外当前玩家和相机的Y轴旋转只用到了mX/2,这也可能是旋转方向/幅度不符合预期的原因。

修正后的代码:

mX += Input.GetAxis("Mouse X") * Sensivity * Time.deltaTime;
mY -= Input.GetAxis("Mouse Y") * Sensivity * Time.deltaTime;

mY = Mathf.Clamp(mY, -89.9f, 89.9f);

// 玩家对象只负责Y轴左右旋转
transform.eulerAngles = new Vector3(0, mX, 0);
// 相机同时应用X轴(上下)和Y轴(左右)旋转,和玩家保持一致的Y轴方向
cam.eulerAngles = new Vector3(mY, mX, 0);

float inputX = Input.GetAxis("Horizontal");
float inputY = Input.GetAxis("Fly");
float inputZ = Input.GetAxis("Vertical");

Vector3 dirForward = Vector3.ProjectOnPlane(transform.forward, Vector3.up).normalized;
Vector3 dirSide = transform.right;
Vector3 dirUp = Vector3.up;

Vector3 moveDir = (inputX * dirSide) + (inputY * dirUp) + (inputZ * dirForward);
transform.position += moveDir * Speed * Time.deltaTime;

关键修正点说明:

  • 合并相机的欧拉角设置:用new Vector3(mY, mX, 0)同时指定X(上下)和Y(左右)轴旋转,避免之前的覆盖问题。
  • 玩家和相机使用相同的mX值做Y轴旋转,确保左右转向同步,不会出现方向相反的情况。
  • 移除了原代码中mX/2的减半操作,如果你需要更小的旋转灵敏度,可以直接调整Sensivity参数,这样更直观。

如果调整后相机左右转向方向还是相反,只需要把cam.eulerAngles里的mX改成-mX即可。

内容的提问来源于stack exchange,提问作者Der Fette Boss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:15:27