본문 바로가기

대학교 게임 개발 포트폴리오/VR 게임 개발

유니티 오큘러스 VR 게임 개발 - (2) 이동

 

 

 

 

오늘 해볼 것은 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로 설정해 준다.

카메라 아이콘에 가려 잘 안보이지만, 중심점의 위치가 바뀌어서 캐릭터가 바닥과 충돌처리 가능한 위치가 된다. 0일 경우 캐릭터의 중심점이 Plain보다 아래에 있어 충돌 처리가 안되어서 떨어짐.

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은 유니티 상에서 존재할 수 있는 최소 / 최대 높이를 나타낸다.

 

 

 

 

다음과 같이 영상을 보면 잘 되는 것을 알 수 있다.

 

 

 

 

높이에 따라 잘 바뀌는지 확인하기 위해 앉았다 일어나기를 반복해 봤다.

오랜만에 앉았다 일어났다를 반복하니 무릎에서 뚜두둑소리가 났지만 잘 작동하는 걸 확인할 수 있어서 기뻤다..