将旋转的摄像头重置为再次位于播放器后面

时间:2019-01-12 12:59:52

标签: c# unity3d 3d camera rotation

我正在研究跟随玩家的第三人称轨道相机。

我可以成功地将相机粘贴到播放器上,也可以使用Mouse X围绕播放器旋转相机。

自3个小时以来,我一直在努力重新设置摄像机(单击鼠标右键)使其完全位于播放器后面(显示他的背部),直到播放器在世界范围内移动并旋转了一点并且摄像头绕着他转了一圈。

感谢您的帮助!

    Vector3 defaultOffset; // offset on scene start
    Vector3 offset;  // offset when camera is rotated by Mouse X

    void Start() {
        defaultOffset = transform.position - player.transform.position;
        offset = defaultOffset;
    }

    void LateUpdate() {
        if (Input.GetMouseButtonDown(1)) {
            // reset offset vector to be behind 
            // player on right-mouse button click
            // ??? HOW ???
        } else {
            // take movement of Mouse axis to rotate around the player
            float degrees = Input.GetAxis("Mouse X") * 0.5 * Time.deltaTime;
            Quaternion angle = Quaternion.AngleAxis(degrees, Vector3.up);
            offset = angle * offset;
        }

        // set camera position and look at player
        transform.position = player.transform.position + offset;
        transform.LookAt(player.transform);
    }

1 个答案:

答案 0 :(得分:1)

尝试:

transform.position = player.position - player.forward * 2.5f;

我认为这可能有效。