Project_WL/Assets/Script/Ingame/MeshRendererVisibility.cs

35 lines
1.1 KiB
C#
Raw Permalink Normal View History

using UnityEngine;
public class MeshRendererVisibility : MonoBehaviour
{
public GameObject go_obj;
private MeshRenderer[] meshRenderers; // MeshRenderer 목록
private Plane[] cameraFrustumPlanes; // 카메라의 프러스틀럼 평면
private void Start()
{
meshRenderers = go_obj.GetComponentsInChildren<MeshRenderer>();
}
private void Update()
{
if (DSUtil.CheckNull(meshRenderers)) return;
// 카메라의 프러스틀럼 평면 계산
cameraFrustumPlanes = GeometryUtility.CalculateFrustumPlanes(Camera.main);
// 각 MeshRenderer의 Bounds가 프러스틀럼에 포함되는지 확인
foreach (var renderer in meshRenderers)
{
if (GeometryUtility.TestPlanesAABB(cameraFrustumPlanes, renderer.bounds))
{
renderer.enabled = true; // 카메라 뷰 내에 있으면 활성화
}
else
{
renderer.enabled = false; // 카메라 뷰 밖에 있으면 비활성화
}
}
}
}