📜  unity 围绕真实中心旋转 - C# (1)

📅  最后修改于: 2023-12-03 15:35:30.709000             🧑  作者: Mango

Unity 围绕真实中心旋转 - C#

介绍

Unity是一款流行的游戏引擎,它支持3D、2D和AR/VR应用程序的开发。在游戏开发中,围绕真实中心旋转是一项常见的任务。例如,您可能想让摄像机围绕角色旋转,或者让对象围绕某个点旋转。本文将介绍如何使用C#代码实现Unity围绕真实中心旋转。

围绕真实中心点旋转

在Unity中,我们可以使用Transform.RotateAround()方法来实现围绕真实中心点旋转。该方法需要三个参数:旋转中心点的世界坐标、旋转轴的向量和旋转角度。以下是使用Transform.RotateAround()方法实现摄像头围绕角色旋转的示例代码:

public class CameraController : MonoBehaviour
{
    public Transform target;
    public float distance = 10.0f;
    public float height = 5.0f;
    public float rotationDamping = 3.0f;

    void LateUpdate()
    {
        float desiredAngle = target.transform.eulerAngles.y;
        Quaternion rotation = Quaternion.Euler(0, desiredAngle, 0);
        Vector3 position = target.position - (rotation * Vector3.forward * distance + Vector3.up * height);

        transform.position = position;
        transform.LookAt(target.position + Vector3.up * height);

        if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.RotateAround(target.position, Vector3.up, -rotationDamping * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.RightArrow))
        {
            transform.RotateAround(target.position, Vector3.up, rotationDamping * Time.deltaTime);
        }
    }
}

在此示例中,我们首先计算旋转点和摄像机之间的距离和高度,然后调用transform.LookAt()方法,使摄像机朝向角色。接下来,在LateUpdate()方法中,我们使用transform.RotateAround()方法根据左右箭头输入来旋转摄像机。该方法使用target对象的位置作为旋转中心点,并使用向量(0,1,0)作为旋转轴。

围绕自定义中心点旋转

有时,您可能希望围绕自定义中心点旋转,而不是物体的中心。在这种情况下,您可以将中心点的位置传递给Transform.RotateAround()方法。以下是使用Transform.RotateAround()方法实现对象围绕自定义中心点旋转的示例代码:

public class RotateAroundCustomPoint : MonoBehaviour
{
    public float anglePerSecond = 20.0f;
    public Vector3 centerPoint = Vector3.zero;
    public Vector3 axis = Vector3.up;

    private void Update()
    {
        transform.RotateAround(centerPoint, axis, anglePerSecond * Time.deltaTime);
    }
}

在此示例中,我们将旋转中心点定义为centerPoint变量,并将旋转轴定义为axis变量。然后,在Update()方法中,我们使用transform.RotateAround()方法根据每秒旋转的角度来旋转对象。请注意,我们使用centerPoint变量将自定义中心点的位置传递给Transform.RotateAround()方法。

结论

围绕真实中心旋转是一项常见的任务,在Unity中使用C#编程实现是非常简单的。我们可以使用Transform.RotateAround()方法来实现围绕真实中心点旋转,该方法需要旋转中心点的位置、旋转轴的向量和旋转角度。如果您想围绕自定义中心点旋转,则可以将中心点的位置传递给Transform.RotateAround()方法。