C# 将旋转后的摄像机重新设置到播放器后面

C# 将旋转后的摄像机重新设置到播放器后面,c#,unity3d,3d,camera,rotation,C#,Unity3d,3d,Camera,Rotation,我正在研制一台跟踪玩家的第三人称轨道相机 我可以成功地将相机粘贴到播放机上,还可以使用鼠标X围绕播放机旋转相机 3个小时以来,我一直在努力重新设置相机(鼠标右键单击),使其在玩家移动和旋转一圈后(显示其背部),相机在玩家周围旋转 谢谢你的帮助 Vector3 defaultOffset; // offset on scene start Vector3 offset; // offset when camera is rotated by Mouse X void S

我正在研制一台跟踪玩家的第三人称轨道相机

我可以成功地将相机粘贴到播放机上,还可以使用
鼠标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.transform.position。如果这不起作用,则原点是对象的左上角。因此,如果中心距角1/2的高度和1/2的宽度。要获取中心x+=player.Left+(.5*player.Width)y=player.Top+=(.5*player.Height)摄像机。Left=x-(.5*camera.Width)摄像机。Top=y-(.5*camera.Height)请记住y方向正向下。这不起作用。我需要将我的相机矢量与播放机的前视方向对齐,但不知道如何对齐。我想在将相机旋转到播放机右侧后,将相机弹回来,使其再次坐在播放机后面。
offset=defaultOffset
?offset=defaultOffset不考虑玩家可能在一段时间后将上半身旋转到不同的方向。需要调整偏移的X&Z值,使其再次位于播放机后面。我有一种感觉,这与球员的前进方向有关,但我所有的测试都失败了。它起作用了!我只需要添加一些平滑和重新定位的Y轴上的相机,但这一切都是好的。谢谢没问题,很乐意帮忙。
transform.position = player.position - player.forward * 2.5f;