Unity C# TPS僵尸游戏相机Y轴旋转反向问题求助
修复TPS游戏相机Y轴旋转反向问题
你的相机Y轴旋转反向的核心原因是鼠标Y轴输入的方向与期望的旋转方向相反:Input.GetAxis("Mouse Y")在向下拖动鼠标时返回正值,导致fareY累加后让相机X轴欧拉角(控制抬头/低头)向相反方向变化,最终出现"向下拖鼠标角色抬头"的反向操作。
修复步骤
对鼠标Y轴的输入取反,修正
fareY的累加逻辑:
把原代码中的:fareY += Input.GetAxis("Mouse Y") * hassasiyet;改为:
fareY += -Input.GetAxis("Mouse Y") * hassasiyet;这样向下拖动鼠标时,
fareY会减少,对应相机低头,符合直觉操作逻辑。清理冗余代码:原代码中重复设置了
transform.eulerAngles和transform.localEulerAngles,属于无效重复操作,保留一组即可(推荐使用localEulerAngles,避免父物体旋转影响相机自身角度)。
修改后的完整代码
public class KameraKontrol : MonoBehaviour { public Transform hedef; public Vector3 hedefMesafe; [SerializeField] private float hassasiyet; float fareX, fareY; Vector3 objRot; public Transform karakterVucut; void Start() { Cursor.lockState = CursorLockMode.Locked; } private void LateUpdate() { this.transform.position = Vector3.Lerp(this.transform.position, hedef.position + hedefMesafe, Time.deltaTime * 10); // 修正:对Mouse Y输入取反,匹配直觉操作 fareX += Input.GetAxis("Mouse X") * hassasiyet; fareY += -Input.GetAxis("Mouse Y") * hassasiyet; // 限制Y轴旋转角度范围,避免过度抬头/低头 if (fareY >= 25) { fareY = 25; } if (fareY <= -40) { fareY = -40; } // 保留一组角度设置,去除冗余操作 this.transform.localEulerAngles = new Vector3(fareY, fareX, 0); hedef.transform.localEulerAngles = new Vector3(0, fareX, 0); Vector3 gecici = this.transform.localEulerAngles; gecici.z = 0; gecici.y = this.transform.localEulerAngles.y; gecici.x = this.transform.localEulerAngles.x + 10; objRot = gecici; karakterVucut.transform.eulerAngles = objRot; } }
内容的提问来源于stack exchange,提问作者RBNova
相关产品推荐
相关产品推荐

