如何实施“能见度系统”

时间:2019-07-18 11:51:20

标签: unity3d entity-component-system

我设法禁用了不在屏幕上的实体的动画。但是,我正在寻找一种更纯粹的基于数学的方法(而不是视口点技巧)。有人知道我如何有效地“操纵”此代码?

public class VisibilitySystem : ComponentSystem
{
    protected override void OnUpdate()
    {
        var dt = Time.deltaTime;

        var cam = Camera.main;

        Entities.ForEach((ref IsVisible IsVisible, ref LocalToWorld LocalToWorld) =>
{
    Vector3 viewPos = cam.WorldToViewportPoint(LocalToWorld.Position);
    if (viewPos.x > 0 && viewPos.x < 1 && viewPos.y > 0 && viewPos.y < 1 && viewPos.z > 0)
    {
        IsVisible.Value = true;
    }
    else IsVisible.Value = false;
});
    }
}

0 个答案:

没有答案