2017-10-19 29 views
0

我搜索了不同的解决方案,以使对象在VR中离开特定摄像机视口时消失。使对象在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

您是否设置了正确的界限?该脚本在您当前的gameobject中被禁用?这个gameobject有一个对撞机? – joreldraw

回答

0

您既可以使用Renderer.isVisible,或Renderer.OnBecameVisible()Renderer.OnBecameInvisible()

下面的例子是从手册页。

虽然启用并不禁用游戏对象,但如果对象没有被任何相机看到,它只是“暂停”更新。如果你使用协程,你需要自己暂停。

显然,由于此方法使用了渲染器,因此您不能仅禁用游戏对象。我的意思是你可以,但它不会被OnBecameVisible重新启用。但相机视锥体外的物体无论如何都不会得到渲染/剔除。

using UnityEngine; 

public class ExampleClass : MonoBehaviour { 
    void OnBecameInvisible() { 
     enabled = false; 
    } 
    void OnBecameVisible() { 
     enabled = true; 
    } 
} 
+0

我试过这种方法,但是它将所有相机都考虑在内了吗?包括编辑器,我真的想要一个方法,我可以指定这只适用于一台相机。 –

相关问题