2014-11-14 1 views
3

저는 캐릭터가 물체를 밀도록하기 위해 노력하고 있습니다. 문제는 그가 물건을 만지 자마자 터치가 우발적이고 캐릭터가 물건의 방향을 향하고 있지 않을 때에도 움직이기 시작한다는 것입니다.카메라가 특정 방향을 향하고 있는지 확인하십시오.

내가하고 싶은 것은 충돌이 일어날 때 방향을 얻는 것입니다. 그리고 카마라가 실제로 그 방향을 향하고 있다면 플레이어가 움직일 수있게하십시오.

지금 나는 그 물체의 방향을 잡았을뿐 카메라의 방향과 비교하는 방법을 모르겠습니다.

void OnCollisionEnter(Collision col) { 
    float maxOffset = 1f; 
    if (col.gameObject.name == "Sol") { 
     // Calculate object direction 
     Vector3 direction = (col.transform.position - transform.position).normalized; 

     // Check the offset with the camera rotation (this doesn't work) 
     Vector3 offset = direccion - Camera.main.transform.rotation.eulerAngles.normalized; 

     if(offset.x + offset.y + offset.z < maxOffset) { 
      // Move the object 
     } 
} 

답변

0

당신은 여러 가지 방법으로이를 달성하기 위해 시도 할 수 있습니다 :

이것은 내가 지금 노력하고있어 있습니다. 얼마나 정확하게 당신이 을 의미하는지 조금 의존합니다. 상자.

개체가 특정 카메라 내에서 보이고 다음 기능을 사용하여 들어가거나 떠날 때 이벤트를 가져올 수 있습니다. 이 명령을 사용하면 상자가 해당 카메라로 렌더링되므로 (가장자리 만 보이더라도) 충돌이 발생합니다.

OnWillRenderObject, Renderer.isVisibleRenderer.OnBecameVisible, OnBecameInvisible

또는 다음과 같은 형상을 사용할 수 있습니다 당신이 상자를 경계 객체가 카메라의 뷰 프러스 텀 내에 있는지 여부 및 계산하기 위해 시도 할 수는

GeometryUtility.CalculateFrustumPlanes, GeometryUtility.TestPlanesAABB

명령

또는 매우 정확하게 을 마주보고 일 경우 Physics.Raycast으로 갈 수 있습니다. 그렇다면 위스콘신 광선이 물체에 부딪 칠 때만 이벤트를 트리거합니다.

희망 사항은 나중에 도움이됩니다.

0

나침반 obj를 타고 장치 미안 개체에 맞춰 정렬하십시오. 이동시보다 커서가 가리키는 위치를 항상 알 수 있습니다.

이론적으로는 작동해야하지만 시뮬레이터 모션 엔진의 버그로 인해 개체가 움직일 수 있습니다.

관련 문제