Unity判断物体是否在屏幕中

2019-07-17  本文已影响0人  沉麟
public bool IsInView(Vector3 worldPos)
    {
        Transform camTransform = Camera.main.transform;
        Vector2 viewPos = Camera.main.WorldToViewportPoint(worldPos);
        Vector3 dir = (worldPos - camTransform.position).normalized;
        float dot = Vector3.Dot(camTransform.forward, dir);     //判断物体是否在相机前面


        if (dot > 0 && viewPos.x >= 0 && viewPos.x <= 1 && viewPos.y >= 0 && viewPos.y <= 1)
            return true;
        else
            return false;
    }

    private void Update()
    {
        Vector2 vec2 = Camera.main.WorldToViewportPoint(gameObject.transform.position);

        if (!IsInView(transform.position))
        {

            Destroy(gameObject);
            Debug.LogError("场景不在摄像机范围内");

            return;
        }
    }

注意:要设置主相机的tag标签是MainCamera,不然会报空指针错误。

上一篇 下一篇

猜你喜欢

热点阅读