美文网首页
Unity判断物体是否在屏幕中

Unity判断物体是否在屏幕中

作者: 沉麟 | 来源:发表于2019-07-17 17:34 被阅读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,不然会报空指针错误。

相关文章

网友评论

      本文标题:Unity判断物体是否在屏幕中

      本文链接:https://www.haomeiwen.com/subject/sseclctx.html