본문 바로가기

프로그래밍/Unity_VR

내 캐릭터를 어떤 방식으로 움직이게 할까?

VR 프로그램을 만들 때 고민이 되는 점 중 하나는 "내 캐릭터를 어떻게 움직이게 하는게 좋을 것인가?" 입니다.

 

이동 방식에는 여러가지가 있지만 Oculus에서 제공하는 플러그인과 유틸리티들을 이용해서 제작하기 가장 쉬운 것은 직접이동 방식입니다.

 

직접 이동은 컨트롤러의 스틱(이나 다른 버튼)을 이용하여 내 캐릭터를 조종하는 방식입니다. 수 많은 3D 게임에서 제공하는 이동 방식으로 전통적인 조이스틱 방식입니다-키보드가 아닌 게임패드로 오버워치를 한다고 생각하면 쉽습니다.

 

그렇지만 VR에서 직접 이동은 사용자에게 너무나도 큰 시련을 줍니다. 직접 이동은 큰 가상 멀미를 야기하기 때문입니다. 사용자마다 체감하는 정도는 다르지만 개인적으로는 직접 이동만 할 수 있게 한 게임이 있다면.. 저는 하지 않을 가능성이 큽니다.

 

직접 이동 대신 많이 사용하는 것이 바로 Teleportation입니다. 흔히 텔포라고 합니다.

 

텔포는 메이플스토리에서 법사들이나 쓰는 건 줄 알았는데, VR 게임들을 하다보니 텔레포트라는 것을 다시 사용하게 되었습니다.

 

 

 

Oculus에서는 유니티를 이용하는 개발자들을 위해 OVRPlugin을 제공하고 있습니다.

 

https://developer.oculus.com/documentation/unity/unity-utilities-overview/#unity-utilities-ovrplugin

 

Oculus Utilities for Unity

This section provides an overview of the Utilities package, including its directory structure, the supplied prefabs, and several key C# scripts. The Utilities package is available from our Unity Downloads page, and as part of the Oculus Integration availab

developer.oculus.com

저 플러그인이 있으면 Oculus와 유니티를 연동하는 것은 일도 아닙니다.

 

Oculus에서는 플러그인 뿐만 아니라 유니티에서 사용 가능한 많은 유틸리티들을 제공하고 있고 그 중에는 이동 방식에 대한 것도 있습니다.

 

https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022

 

Oculus Integration | 기능 통합 | Unity Asset Store

Get the Oculus Integration package from Oculus and speed up your game development process. Find this & other 기능 통합 options on the Unity Asset Store.

assetstore.unity.com

https://developer.oculus.com/documentation/unity/unity-sf-locomotion/

 

Locomotion Sample Scene

The Unity Locomotion sample scene demonstrates various movement schemes as examples of how you can implement locomotion in your own applications. This scene puts you in a large area with static structures and buildings. There are several movement schemes a

developer.oculus.com

 

출처 : https://developer.oculus.com/documentation/unity/unity-sf-locomotion/

 

Locomotion Sample Scene 문서를 보면 Oculus Plugin에는 직접 이동과 3가지 방식의 텔레포트를 제공하고 있는 것을 확인할 수 있습니다.

 

저 문서를 보고 신이나서 제 프로젝트에 적용해봤지만 프로그래밍을 하다보면 꼭 마주치게 되는 숙명과도 같이 그것은 내 프로젝트에 적용이 되지 않았습니다.

 

구글링을 통해 수 많은 문서들의 도움을 받아 지금은 해결이 됐습니다. 며칠을 고생해서 아마 다시 하라고 한다면 못 할 것 같습니다.

 

제 프로젝트에서 적용이 되지 않은 이유는

1. 플러그인 업데이트로 인해 내부적으로 뭔가가 변경됨

2. 내가 못하는 거임

3. 원래 안되는거임

이 셋 중 하나일 것 같습니다.

 

텔레포트 기능을 구현하는 데 시간이 오래걸렸습니다.

 

아마 OVRInput과 TeleportInputHandlerTouch cs파일들을 먼저 살펴봤으면 시간을 더 아낄 수 있었을 것입니다.

 

다음 글에서는 OVRInput에 대해 다루고싶습니다.

'프로그래밍 > Unity_VR' 카테고리의 다른 글

OVRInput  (0) 2020.04.03
유니티로 VR 프로그램을 만들고 있습니다.  (0) 2020.03.31