使用鼠标Unity围绕物体旋转相机

Rotate camera around object with mouse Unity

我想围绕游戏对象移动相机,换句话说:当我按住鼠标中键并移动鼠标时,相机应该围绕这个游戏对象移动,(就像地球围绕太阳但也在 y 轴上)我有这段代码,但它在做奇怪的事情:

 private void RotateCamera()
{
    if (Input.GetKey(KeyCode.Mouse2))
    {

        yaw += _horizontalSpeed * Input.GetAxis("Mouse X"); //Horizontal speed and vertical are both equal 10, It's just how fast camera should move
        pitch += _verticalSpeed * -Input.GetAxis("Mouse Y");

        pitch = ClampAngle(pitch, -90, 90);
        transform.position = new Vector3(pitch + target.position.x, yaw + target.position.y, 0);
    }
}

我会简单地在您要观察的位置添加一个空对象,并将相机作为子对象添加到其中。

然后您可以将旋转应用于父对象,相机应围绕其父对象旋转并始终朝向它。

如果你想改变目标,只需删除父子层次结构,将以前父级的位置移动到新位置,将相机旋转到它(使用transform.LookAt())并设置父级-再次像以前一样子层次结构。