使对象在VR中离开特定摄像机视口时消失
问题描述:
我搜索了不同的解决方案,以使对象在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问题?
答
您既可以使用Renderer.isVisible
,或Renderer.OnBecameVisible()
和Renderer.OnBecameInvisible()
下面的例子是从手册页。
虽然启用并不禁用游戏对象,但如果对象没有被任何相机看到,它只是“暂停”更新。如果你使用协程,你需要自己暂停。
显然,由于此方法使用了渲染器,因此您不能仅禁用游戏对象。我的意思是你可以,但它不会被OnBecameVisible重新启用。但相机视锥体外的物体无论如何都不会得到渲染/剔除。
using UnityEngine;
public class ExampleClass : MonoBehaviour {
void OnBecameInvisible() {
enabled = false;
}
void OnBecameVisible() {
enabled = true;
}
}
+0
我试过这种方法,但是它将所有相机都考虑在内了吗?包括编辑器,我真的想要一个方法,我可以指定这只适用于一台相机。 –
您是否设置了正确的界限?该脚本在您当前的gameobject中被禁用?这个gameobject有一个对撞机? – joreldraw