C#如何使边界适合旋转的摄影机

本文关键字:旋转 摄影机 何使 边界 | 更新日期: 2023-09-27 18:20:20

在Unity中,我有一个类正在创建一个新的边界,对于那些可能不知道Unity边界实际上只是一个立方体的人来说。然后我有一个像相机这样的对象,我想把这个边界添加到相机上,并缩放它以适应视图的截头体。如果它从不旋转,那就很容易了,但相机确实旋转了,而此刻我正在画一个空白。

这就是我现在所拥有的,当相机不旋转时,开关工作

    float h = Mathf.Tan(cam.fov * Mathf.Deg2Rad * .5f) * cam.farClipPlane * 2;
    Vector3 scale = new Vector3(h * cam.aspect, h, cam.farClipPlane);
    newBounds.center = cam.transform.position + cam.transform.forward * (cam.farClipPlane/2);
    newBounds.size = scale; 

C#如何使边界适合旋转的摄影机

每当我们在BoxCollider上设置边界时,我们只设置边界的大小和中心,这些边界包含相对于局部位置和旋转的大小和圆心所以,你不需要为旋转编写代码,只需设置

transform.GetComponent<BoxCollider>().centertransform.GetComponent<BoxCollider>().size

边界将根据游戏对象的变换自动旋转