将旋转的相机重置为再次位于玩家身后

Reset rotated camera to be behind player again

我正在开发一个跟随玩家的第三人称轨道摄像机。

我成功地可以将摄像头贴在玩家身上,还可以使用 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);
    }

尝试:

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

我认为这可能有效。