오늘 해볼 것은 vr 컨트롤러의 조이패드를 이용한 이동을 해볼 거다.
L1을 통해 플레이어를 움직이고, R1을 통해 바라보는 방향을 변경할 것이다.
오늘도 아래의 영상을 통해 학습할 예정이다.
https://www.youtube.com/watch?v=0VowAem2aMM&list=PLpEoiloH-4eP-OKItF8XNJ8y8e1asOJud&index=4
오늘의 미리보기~~
우선 게임상에서 캐릭터를 움직이기 위해서는
컨트롤러로부터 값을 받아와 행동시키는 시스템이 필요하다.
이를 위해 Locomotion System 컴포넌트를 추가해 준다.
Locomotion System - XR Origin에 현재 가지고 있는 컴포넌트를 집어넣어 준다.
추가로 Character Controller 컴포넌트도 추가한다.
이 컴포넌트는 캐릭터의 이동과 상호작용을 관리하는 기능을 제공한다.
컴포넌트를 추가해 준 뒤 두 가지를 설정해 준다.
1. Radius 변수를 0.2로 조정해 준다.
이렇게 할 경우 움직일 때 다른 물체들에 막히지 않게 된다. 또한 더욱 정확하게 움직이게 해 준다.
2. Center - Y를 1로 설정해 준다.
1로 설정해 주는 이유는 캐릭터의 중심점을 조정하여 이동과 충돌 감지를 최적화하기 위함이다.
Y 값이 1로 설정되면 캐릭터의 중심이 발아래에 위치하게 되어, 바닥과의 충돌을 정확하게 감지할 수 있다.
그다음으로 이동을 위한 컴포넌트를 추가한 후 4가지를 설정해 준다.
1. System - XR Origin을 집어넣어 준 후,
2. Gravity Application Mode를 Immediately로 해준다.
Immediately로 설정해줄 경우 만약 캐릭터가 공중에서 생성되더라도 바로 바닥으로 가도록 바닥에 붙어있게 해 준다.
3. 다음으로 Forward Source - Main Camera를 넣어준다.
Forward Source는 캐릭터가 이동할 때 기준이 되는 방향을 정의하며
사용자의 시선 방향이나 특정 오브젝트의 방향에 따라 이동할 수 있게 한다.
4. Left/Right Hand Move Action을 다음과 같이 설정해준다.
그 후 XRI Defalut Input Actions를 더블 클릭해 보자.
살펴보면 다음과 같이 방향 조절을 위한 벡터가 존재하는 것을 확인할 수 있다.
★ 참고 ★
참고로 유튜브 영상에서는 예전버전이라서 왼손 조이스틱에만 Move - Primary2DAxis가 존재 했지만
지금은 오른쪽 조이스틱에도 Move - Primary2DAxis가 존재한다.
그래서 나중에
Right Hand Move Action - Use Reference 체크를 해제해서 오른쪽 조이스틱으로는 움직일 수 없게 수정했다.
이제 플레이어가 잘 움직이는지 확인해 보자.
다음과 같이 잘 움직이는 것을 볼 수 있다.
하지만 보는 방향을 조정할 수 없어 불편함이 크다. 이제 방향을 조정해 보자.
방향 전환을 하는 데에는 두 가지 컴포넌트가 존재한다.
1. Continuous Turn Provider
얘는 플레이어가 천천히 회전하게 해 준다.
2. SnapTurn Provider
얘는 정해진 각도에 따라 즉각적으로 회전시켜 준다. 얘는 뚝뚝 끊기는 느낌을 준다.
두 개 다 적용해서 테스트해 볼 예정이다.
테스트를 위해
두 개의 컴포넌트를 넣어주고, System에 위에서 만든 Locomotion System을 넣어준다.
그 후 Right Hand Snap/Turn Actions - Use Referencce 체크,
Reference에 다음과 같이 넣어준다.
왼손을 넣지 않는 이유는 왼손 조이패드는 캐릭터의 움직임을 담당할 것이기 때문이다.
이제 두개의 컴포넌트를 각각 활성화해서 본 결과이다.
1. Continuous Turn Provider
스무스하게 방향전환이 되는 것을 볼 수 있다.
2. SnapTurn Provider
화면 전환 각도를 45도로 설정했기 때문에 조이패드를 움직일 때마다 각도가 45씩 휙휙 바뀌는 걸 볼 수 있다.
필요에 따라 컴포넌트를 선택하면 된다.
그런데 문제점이 있다.
실제로 VR을 끼고 앉았다 일어났다를 해보아도 높이가 적용되지 않고, 중심점을 기준으로 방향만 볼 수 있다.
VR 기기의 위치에 따라 유니티 상에서 높이를 다르게 하기 위해 다음과 같은 컴포넌트를 추가해 준다.
Locomotion Provider 에 Locomotion System 컴포넌트를 드래그해 넣어준다.
그러는 기기의 위치에 따라 카메라의 높이 위치 또한 변경이 될 것이다.
Min / Max Height은 유니티 상에서 존재할 수 있는 최소 / 최대 높이를 나타낸다.
다음과 같이 영상을 보면 잘 되는 것을 알 수 있다.
높이에 따라 잘 바뀌는지 확인하기 위해 앉았다 일어나기를 반복해 봤다.
오랜만에 앉았다 일어났다를 반복하니 무릎에서 뚜두둑소리가 났지만 잘 작동하는 걸 확인할 수 있어서 기뻤다..
'대학교 게임 개발 포트폴리오 > VR 게임 개발' 카테고리의 다른 글
유니티 오큘러스 VR 게임 개발 - (1) 그립 (9) | 2024.09.29 |
---|---|
유니티 오큘러스 VR 게임 개발 - (0) 환경설정 (1) | 2024.09.28 |