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,不然会报空指针错误。