유니티 VR 텔레포트 로코모션

이번 포스팅에서는 OVR SDK를 이용해서 텔레포트 로코모션하는 방법에 대해 알아보겠습니다.

 

Meta XR Interaction SDK OVR Integration / Deprecated

 

저의 경우 버전은 위 사진에 나와 있는 버전을 사용중에 있습니다. 저의 경우 더 이상 예전 버전을 사용하지 않습니다.

 


플레이어 세팅 

위 (좌)프리팹을 사용하기 위해서는 OVR Integration Sample 프로젝트도 받아야 한다

 

저는 언제나 세팅되어 있는 플레이어 프리팹을 사용합니다.

프로젝트 검색란에 InteractionRig까지 검색하신후 Basic을 하이러키창에 끌어다 놓아줍니다.

 

다음으로,  LocomotionControllerInteractorGroup을 찾아줍니다.

[Left/Right] Controller 자식으로 집어넣어준다 / 빈 오브젝트 3개를 만들고 우측 사진처럼 집어넣어준다

 

LocomotionControllerInteractorGroup을 각 Controller의 자식으로 집어넣어줍니다.

그 다음, 3개의 빈 오브젝트를 만들어준 다음 우측 사진처럼 각 컨트롤러에 하나씩 넣어주고 OVRControllers 자식으로 Locomotion 오브젝트를 넣어줍니다.

 

컴포넌트 추가

 

Locomotion부터 Player Locomotor컴포넌트를 부착해줍니다. 

그 다음, Feature 오브젝트에 OVR Axis 2D 컴포넌트를 부착해주고 Type에 맞게 설정해줍니다.

 

Handler 등록

 

LocomotionControllerInteractorGroup 오브젝트를 클릭 후 Locomotion Events Connection 컴포넌트의 Handler 부분에 방금 만든 Locomotion을 할당해줍니다.

 

Axis 2D 등록

 

Axis 2D를 등록해야하는 부분은 총 4군데가 있습니다. 사진을 참고해주시길 바랍니다.

[Left/Right] 둘 모두 방금 만든 Feature를 알맞게 할당해주면 됩니다.

 

이로써 플레이어 세팅은 끝났습니다.


텔레포트 영역 설정

텔레포트 할 수 있는 영역을 세팅해보도록 하겠습니다.

 

Plane

 

Plane하나를 생성해줍니다. 이 Plane은 플레이어가 텔레포트 할 수 있는 영역입니다.

 

우측 사진과 같이 3개의 컴포넌트를 추가해줍니다.

Teleport Interactable 컴포넌트의 경우 "Allow Teleport"를 토글함으로써 텔레포트할 수 있게 하거나 불가능하게 할 수 있습니다.

 

Option

 

Optionals 토글을 열어보면Tie Breaker Score, Target 등 있습니다.

Tie Breaker Score 속성의 경우 아크가 동시에 Teleport Interactable를 가진 객체를 2개 이상 Hit했을 때, 우선순위가 높은 Tie Breaker Score의 Teleport Interactable가 선택되도록 해줍니다.

 

Target Point의 경우 텔레포트 했을 때 특정 위치로 텔레포트되게 해줍니다.

 

Surface부분에는 여러가지 컴포넌트가 있으며 지형에 따라 선택할 수 있습니다.

예제씬의 세밀한 지형의 경우 Nav Mesh Surface을 이용하였습니다.

 

위와 같이 단순한 형태의 Plane의 경우 Collider Surface, Plane Surface 중 하나를 선택해서 사용하시면됩니다.

 

이때, Plane Surface를 하시게 될 경우 Plane보다 벗어난 텔레포트 영역이 생기므로 따로 조치를 하셔야 합니다.

 

저는 일단 Plane Surface을 이용하였고, Facing의 경우 BackWard를 선택하였습니다.

 

Valid Mode

 

마지막으로 Reticle Data Teleport는 텔레포트 위치에 Reticle을 표시할 수 있는 기능입니다. 

Mode는 총 Valid, InValid, Hidden이 있고 본인이 선택하시면 됩니다.

 

Valid 모드의 경우 위 사진처럼 동그란 원이 표시되며, InValid 모드의 경우 X가 표시됩니다.

 


텔레포트 HotSpot

핫스팟을 이용한 텔레포트

원하는 영역에 좀 더 부드럽고 편하게 텔레포트 하고 싶을 때가 종종 생깁니다.

그럴 때는 핫스팟을 이용하여 해당 지점으로 편하게 텔레포트 할 수 있습니다.

  

핫스팟 콜라이더

 

핫스팟을 사용할 영역에 콜라이더를 생성하고 영역만큼 크기를 늘려줍니다.

 

Hotspot

 

본인이 직접 만드셔도 되고 프로젝트에 Hotspot을 검색하시면 세팅되어 있는 핫스팟 프리팹이 존재하므로 가져다 사용하시면 됩니다.

 


 

이상으로 텔레포트 로코모션 방법에 대해 알아보았습니다.

 

틀린 부분이 있다면 언제든 지적해주시면 감사하겠습니다!