这是因为 CameraHandle 是 PlayerHandle 的子物体,当 PlayerHandle 旋转时,CameraHandle 也会跟着旋转。在代码中,我们对 CameraHandle 进行了旋转,所以它会沿着 PlayerHandle 旋转。如果想要 CameraHandle 保持不变,可以将它移出 PlayerHandle 的子物体。

public class cCamera : MonoBehaviour
{
    mPlayerInput pi;
    public float horizontalSpeed = 30;
    public float verticalSpeed = 30;
    GameObject playerHandle;
    GameObject cameraHandle;
    GameObject model;
    GameObject camera;
    private void Awake()
    {
    }
    private void Start()
    {
        cameraHandle = transform.parent.gameObject;
        playerHandle = cameraHandle.transform.parent.gameObject;
        pi = mPlayerInput.Inst;
        model = playerHandle.GetComponent<cActor>().model;
        camera = Camera.main.gameObject;
    }
    void Update()
    {
        Vector3 tempModelEuler = model.transform.eulerAngles;
        playerHandle.transform.Rotate(Vector3.up, pi.Jright * horizontalSpeed * Time.deltaTime);
        cameraHandle.transform.Rotate(Vector3.right, pi.Jup * -verticalSpeed * Time.deltaTime);

        if (cameraHandle.transform.eulerAngles.x >= 310) cameraHandle.transform.eulerAngles = new Vector3(Mathf.Clamp(cameraHandle.transform.eulerAngles.x, 315, 360), 0, 0);
        else if (cameraHandle.transform.eulerAngles.x < 320) cameraHandle.transform.eulerAngles = new Vector3(Mathf.Clamp(cameraHandle.transform.eulerAngles.x, 0, 30), 0, 0);

        model.transform.eulerAngles = tempModelEuler;

        camera.transform.position = transform.position;
        camera.transform.rotation = transform.rotation;
    }
}
Unity 中 CameraHandle 旋转问题:为什么 CameraHandle 会跟随 PlayerHandle 旋转?

原文地址: https://www.cveoy.top/t/topic/l3n4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录