2017-10-19 6 views
0

VR에서 특정 카메라 뷰포트를 떠날 때 객체가 사라지도록 다른 해결책을 찾아 보았습니다.특정 카메라 뷰포트를 VR에 남겨두면 객체가 사라집니다.

 //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); 
      } 
     } 

그러나이는 뷰포트에서 전에 사라 객체 결과 (중간 밖으로 주변, 대신 모든 방법) :

나는 GeometryUtility를 사용하여 다음과 같은 솔루션을 사용하여 끝났다. 이 잘못을 구현하고 있습니까, 아니면 단순히 VR 문제입니까?

+0

범위를 올바르게 설정 했습니까? 스크립트가 현재 게임 개체에 비활성화되어 있습니까? 이 gameobject에는 충돌자가 있습니까? – joreldraw

답변

0

당신은 아래의 예는 매뉴얼 페이지에서입니다 Renderer.isVisible, 또는 Renderer.OnBecameVisible()Renderer.OnBecameInvisible()

를 사용할 수 있습니다 중 하나.

Enabled는 GameObject를 비활성화하지 않지만 개체가 카메라에 표시되지 않는 경우 업데이트를 "일시 중단"합니다. Coroutines를 사용하는 경우 자신을 일시 중지해야합니다.

분명히이 메서드는 렌더러를 사용하기 때문에 GameObject를 비활성화 할 수 없습니다. 내가 할 수는 있지만 OnBecameVisible에서는 다시 사용할 수 없습니다. 그러나 카메라 절두체 외부의 객체는 렌더링되지 못하고 어쨌든 추려집니다.

using UnityEngine; 

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

이 방법을 시도했지만 모든 카메라를 고려해야할까요? 편집자를 포함하여, 나는 단 하나의 카메라에 대해 이것을 지정할 수있는 방법을 정말로 원합니다. –