개요
VR 기기와 연동되어 있는 캐릭터의 이동과 회전을 컨트롤러로 조작해 보자.
Locomotion System을 사용하여 쉽게 구현할 수 있다.
진행하기 전 VR 기기와 캐릭터를 연동하자.
[Unity] VR 캐릭터 리깅 및 연동하여 조작하는 방법
개요 오늘 작업을 진행하기 전 먼저 유니티에서 퀘스트와 연동해 주자. [Unity] VR 퀘스트2 연동(OpenXR 플러그인 세팅) 개요 유니티에서 VR 환경을 구축하기 전 어떤 VR 기기를 표준으로 해야 할지 정
teinoi.tistory.com
Locomotion System 세팅
XR > Locomotion System (Action-based)
하이어라키 뷰에 Locomotion System (Action-based)을 생성한다.
Locomotion System은 VR 환경에서 Teleportation, Continuous Move, Snap Turn, Continuous Turn 등 기능을 제공하고 관리한다.
Locomotion | XR Interaction Toolkit | 2.5.2
Locomotion The XR Interaction Toolkit package provides a set of locomotion primitives that offer the means to move around in a scene during an XR experience. These components include: An XR Origin that represents the center of the tracking space for the us
docs.unity3d.com
Locomotion System 스크립트에 기존에 세팅한 XR Origin을 할당한다.
이렇게 되면 XR Origin을 기준으로 Locomotion System의 기능을 사용할 수 있다.
캐릭터 이동 조작 : Continuous Move
XR Origin(XR Rig) 오브젝트에 Continuous Move Provider (Action-based) 스크립트를 추가하고 다음과 같이 파라미터를 할당한다.
(다른 오브젝트에 스크립트를 추가해도 상관없다.)
System : Locomotion System
Move Speed : 원하는 이동 속도 입력
Enble Strafe : 활성화(옆으로 이동 여부)
Enable Fly : 비활성화(비행 이동 여부)
Use Gravity : 활성화(중력 사용 여부)
Gravity Application Mode : Immediately(매 프레임마다 중력 적용)
Forward Source : XR Origin 하위의 카메라 할당
이 기능을 왼쪽 컨트롤러로 조작할 것이므로 Left Hand Move Action에 Use Reference를 체크한다.
그리고 Reference 항목에 XRI LeftHand Locomotion/Move를 할당한다.
이대로 실행하면 컨트롤러 조작으로 이동은 작동하지만 오브젝트를 통과하는 문제가 있다.
1. XR Origin (XR Rig) 오브젝트와 캐릭터 오브젝트가 동일한 위치에 있는지 확인
2. XR Origin (XR Rig) 오브젝트에 Character Controller 컴포넌트를 추가
3. 캐릭터의 크기만큼 Character Controller의 Radius와 Height를 조정
XR Origin (XR Rig) 오브젝트에 캐릭터 오브젝트를 자식 관계로 변경한다.
캐릭터의 위치는 카메라 위치에 따라 업데이트되므로 캐릭터 오브젝트에 직접 Character Controller를 적용하면 문제가 생긴다.
실행 결과
Character Controller로 콜라이더가 적용되어 더 이상 오브젝트를 통과하지 않는다.
캐릭터 회전 조작 : Snap Turn/Contunuous Turn
Locomtion System 오브젝트에 두 가지 스크립트를 추가한다.
(다른 오브젝트에 스크립트를 추가해도 상관없다.)
Snap Turn Provider : 고정된 각도만큼 회전
Contunuous Turn Provider : 시간에 따라 부드럽게 회전
각각 Locomtion System 오브젝트를 할당하고 Reference 항목에 조작할 버튼을 할당한다.
XR RightHand Locomotion/Snap Turn : 오른쪽 컨트롤러의 스틱을 한 번 눌렀을 때
XR RightHand Locomotion/Turn : 오른쪽 컨트롤러의 스틱을 누르고 있을 때
할당한 조작 버튼이 겹치므로 조작 버튼을 변경하거나 사용 안 할 기능은 비활성화하자.
(Snap Turn과 Turn은 조작 버튼이 겹친다.)
Snap Turn 구현 결과
Contunuous Turn 구현 결과