【问题标题】:C# How to make a bounds fit to a Camera that is rotatedC#如何使边界适合旋转的相机
【发布时间】:2013-07-02 02:34:59
【问题描述】:

在 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# unity3d


    【解决方案1】:

    每当我们在 BoxCollider 上设置边界时,我们只设置边界的大小和中心,这些边界包含相对于本地位置和旋转的大小和中心 因此,您无需编写旋转代码,只需设置

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

    并且边界会根据 GameObject 的 Transform 自动旋转

    【讨论】:

    • 我没有使用盒子碰撞器,我没有使用任何类型的碰撞器。这不是为了碰撞。我只需要知道包含相机的区域及其视场,而不是视场本身。在脚本中,我通过 Bounds newBounds = new bounds() 创建边界
    • 还存储父母轮换并相应地编写您的方法。这也是在碰撞检查之前将父变换应用于边界的统一方式要了解更多信息,您需要解释您需要对这些边界做什么????
    • 我对边界所做的是我为流媒体世界编写的动态遮挡剔除系统。我已经完成了所有工作,它只检查视图中的对象。问题是物体越靠近远平面,发生的爆裂就越多。所以我对此的解决方案是创建一个包含相机的边界,但要大于平截头体(现在直到我得到旋转工作的大小相同+额外的东西,因为它不是平截头体)。但为了使它工作,我需要它根据旋转调整大小
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多