이번 시간에는 저번 시간에 이어서 플레이어의 회전을 구현해보겠습니다.
저번 시간에는 컨트롤러를 통한 움직임을 구현해봤는데요, 움직일 수 있어도 역시 회전이 없으면 불편합니다.
이번 시간에는 VR에서 흔히 사용되는 두 가지 회전의 종류를 알아보고 회전을 적용해보는 시간을 가지겠습니다.
1. Continuous Turn ( 연속적 회전 )
Continuous Turn은 말 그대로 끊기지 않는, 연속적 회전을 의미합니다.
( 흔히 ) 조이스틱을 그 방향으로 당기고 있으면, 회전 속도만큼 회전하는 연속적인 회전을 의미합니다.
직접 적용해보면서 알아보겠습니다.
우선 Continuous Turn을 적용하기 위해서는 움직임과 같이 컴포넌트 하나를 추가해주어야 합니다.
바로 Continuous Turn Provider로, 역할은 Move Provider와 마찬가지로 회전에 관한 입력을 받는 컴포넌트입니다.
Add Component - Continuouos Turn Provider( Action - based )를 추가해줍니다.
이것 또한 저번 편과 마찬가지로 System에는 Locomotion System을 드래그해주시고, Use Reference를 체크해줍니다.
저번시간에 움직임을 지정한 손과 반댓 손에만 회전을 적용할 것이므로, 회전을 적용할 손에 Use Reference를 체크하고,
" XRI LeftHand(RightHand) Locomotion/Turn " 을 할당하여 줍니다.
자 이제 Continuous Turn이 어떻게 작동되는지 실행화면으로 확인해보겠습니다.
부드럽게 회전하는 모습이 보이시나요?
2. Snap Turn ( 스냅 회전 )
Snap Turn은 Continuous Turn과 다르게, 꾸준한 입력이 없어도 한번의 스냅만으로 회전하는 각도만큼 회전할 수 있는 방식입니다.
public변수로 회전각을 받아, 한번의 입력만으로 그 양만큼 회전할 수 있게 해주지만, 끊김이 있으므로 익숙하지 않은 분들은 불편함을 느낄 수 있을 것 같습니다.
적용해보고 어떻게 보이는지 알아보겠습니다.
먼저 Continuous Turn Provider와 마찬가지로 Snap Turn Provider가 존재하는데, 이 컴포넌트를 추가해주도록 합니다.
( Add Component - Snap Turn Provider ( action - based ) )
그리고 나서 Continuous Turn과 마찬가지로 System에는 Locomotion System을 할당하여 주시고, Use Reference 체크 후
회전을 입력하는 손의 방향에 " XRI LeftHand( RightHand ) Locomotion / Turn " 을 할당하여 줍니다.
적용이 완료되었습니다. 이제 어떻게 작동하는지 확인해보겠습니다.
Continuous Turn과는 다르게 끊기면서 회전하는 것을 볼 수 있습니다.
이렇게 해서 VR의 대표적인 두 가지 회전 모드에 대해서 알아보고, 적용해보았습니다.
사용해보시고 조금 더 편한 것으로 사용하시면 될 것 같습니다.
저의 경우엔 앞으로의 자율탐구 프로젝트에서 모두 Continuous Turn을 사용할 것임을 알려드립니다.
감사합니다~
+ 추가적인 문제가 발생하여 해결법을 알려드리려고 합니다.
VR에서는 컨트롤러를 사용하여 움직이는 방법도 있지만 컨트롤러를 사용하지 않고 착용한 사람이 움직일 수 있도록 구현이 되어있습니다.
그러나 이렇게 컨트롤러로 움직이지 않고, 사람이 직접 움직이는 경우에 캡슐 콜라이더가 그것을 따라가지 못했는데요,
이는 나중에 낑김이나 자세를 낮춰 움직이지 못할 우려가 있습니다.
보시면 초록색의 캡슐 콜라이더가 플레이어에 맞춰 따라가지 않는 모습을 볼 수 있습니다.
이 또한 유니티에서 지원하는 컴포넌트가 있습니다.
Add Component - Character Controller Driver을 추가해준 후,
Locomotion Provider에 XR Origin을 넣어 줍니다.
이 Character Controller Driver는 자동으로 플레이어의 움직임을 따라서 콜라이더의 위치와 높이를 조절해줍니다.
이제 콜라이더가 플레이어를 잘 따라오는 모습을 확인할 수 있습니다.
감사합니다.
'개인자율탐구과제' 카테고리의 다른 글
[ Unity VR ] 04. 텔레포트 구현 ( Interaction Ray ) (0) | 2023.05.16 |
---|---|
[ Unity VR ] 03 - (1). 플레이어의 움직임 구현 (0) | 2023.05.15 |
[ Unity VR ] 01. 프로젝트 생성 및 VR 설정 (0) | 2023.04.10 |