// Update is called once per frame
void Update () {
if (transform.childCount>=1)
{
for (int i = 0; i < transform.childCount; i++)
{
float ss= Vector3.Distance(transform.GetChild(i).transform.position, _gameManager.mainCamera.transform.position);
if (isVisibleOn3dCamera(transform.GetChild(i).gameObject, _gameManager.mainCamera)&&ss<20)
{
transform.GetChild(i).gameObject.SetActive(true);
}
else
{
transform.GetChild(i).gameObject.SetActive(false);
}
}
}
}
/// <summary>
/// 判断世界坐标系内的物体,摄像机是否可见
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public bool isVisibleOn3dCamera(GameObject obj, Camera camera3d)
{
Vector3 pos = camera3d.WorldToViewportPoint(obj.transform.position);
// Determine the visibility and the target alpha
bool isVisible = (camera3d.orthographic || pos.z > 0f) && (pos.x > 0f && pos.x < 1f && pos.y > 0f && pos.y < 1f);
return isVisible;
}