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

Unity C# TPS僵尸游戏相机Y轴旋转反向问题求助

修复TPS游戏相机Y轴旋转反向问题

你的相机Y轴旋转反向的核心原因是鼠标Y轴输入的方向与期望的旋转方向相反:Input.GetAxis("Mouse Y")在向下拖动鼠标时返回正值,导致fareY累加后让相机X轴欧拉角(控制抬头/低头)向相反方向变化,最终出现"向下拖鼠标角色抬头"的反向操作。

修复步骤

  1. 对鼠标Y轴的输入取反,修正fareY的累加逻辑:
    把原代码中的:

    fareY += Input.GetAxis("Mouse Y") * hassasiyet;
    

    改为:

    fareY += -Input.GetAxis("Mouse Y") * hassasiyet;
    

    这样向下拖动鼠标时,fareY会减少,对应相机低头,符合直觉操作逻辑。

  2. 清理冗余代码:原代码中重复设置了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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:12:44