我在周围寻找不同的解决方案,使对象在VR中离开特定的摄像机视口时消失。
我最终使用GeometryUtility来使用以下解决方案:
//Create camera planes
Plane[] planes = GeometryUtility.CalculateFrustumPlanes(Camera.main);
//Check if object renderer is in camera view
if (!GeometryUtility.TestPlanesAABB(planes, GetComponent<Renderer>().bounds))
{
//Condition waiting for 2nd object to spawn (To avoid object 1 doesn't disappear instantly)
if (objectCondition.activeSelf)
{
//Deactivate object
gameObject.SetActive(false);
}
}
然而,这会导致对象在离开视口之前消失(大约一半,而不是一直)。我是否实施了这个错误,还是仅仅是VR问题?
答案 0 :(得分:0)
您可以使用Renderer.isVisible
,Renderer.OnBecameVisible()
和Renderer.OnBecameInvisible()
以下示例来自手册页。
启用不会禁用GameObject,它只是&#34;暂停&#34;如果任何相机未看到该对象,则更新。如果你使用Coroutines,你需要自己暂停。
显然,由于此方法使用渲染器,因此您无法禁用GameObject。我的意思是你可以,但它不会被OnBecameVisible重新启用。但是相机之外的物体无论如何都不会被渲染/剔除。
using UnityEngine;
public class ExampleClass : MonoBehaviour {
void OnBecameInvisible() {
enabled = false;
}
void OnBecameVisible() {
enabled = true;
}
}