2017-10-19 10 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

あなたの境界を正しく設定しましたか?スクリプトはあなたの現在のゲームオブジェクトに無効にされていますか?このゲームオブジェクトにはコライダーがありますか? – joreldraw

答えて

0

あなたは、以下の例では、マニュアルのページからであるRenderer.isVisible、またはRenderer.OnBecameVisible()Renderer.OnBecameInvisible()

を使用することができますどちらか。

有効にするとGameObjectは無効になりません。オブジェクトがカメラから見えない場合は、単に更新を中断します。コルーチンを使用する場合は、自分で一時停止する必要があります。

明らかに、このメソッドはレンダラーを使用するため、GameObjectを無効にすることはできません。あなたができることを意味しますが、OnBecameVisibleでは再び有効になりません。しかし、カメラの錐台の外にあるオブジェクトは、レンダリングされません/とにかく淘汰されます。

using UnityEngine; 

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

この方法を試しましたが、すべてのカメラを考慮に入れていますか?エディタを含めて、私は本当に1つのカメラにしか指定できないメソッドが必要です。 –

関連する問題