Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
기초 XR 로코모션
기초적인 로코모션 구현을 위해 Godot XR 도구 라이브러리를 사용해 보겠습니다. 라이브러리에는 기초적인 이동 기능 및 고급 기능들이 포함되어 있습니다.
플레이어 바디 추가하기
먼저 해야 할 것은 XROrigin3D 노드에 도우미 노드를 추가하는 것입니다. XR은 룸스케일 트래킹을 지원하기 때문에 단순히 XR 설정들을 CharacterBody3D 노드에 추가한다고 동작하지는 않습니다. 유저가 물리 공간에서 돌아다녀서 방 가운데에 있지 않게 되면 문제가 생기게 됩니다. Godot XR 도구에서는 이러한 상황에 필요한 로직을 PlayerBody라는 도우미 노드에 추가해 두었습니다.
XROrigin3D 노드를 클릭해서 자식 씬 인스턴스화``를 눌러 ``addons/godot-xr-tools/player/player_body.tscn 노드를 추가합니다.
바닥 추가하기
이 노드가 게임에서의 캐릭터 이동에 영향을 주며 중력에 반응할 것입니다. 따라서 플레이어가 끝없이 추락하는 것을 방지하기 위해서는 씬에 바닥을 추가해야 합니다.
먼저 루트 노드에 StaticBody3D 노드를 추가하고 이름을 ``Floor``로 변경합니다. 그리고 ``Floor``에 MeshInstance3D 노드를 추가합니다. 이후 PlaneMesh 노드를 ``Floor``의 자식으로 추가합니다. 그리고 ``BoxShape``을 shape으로 추가합니다. 박스의 크기는 100 x 1 x 100 미터로 설정하겠습니다. 콜리전 shape을 0.5 미터 아래로 옮겨서 박스의 윗면이 바닥 높이가 되도록 합시다.
우리가 실제로 전 세계를 돌아다니고 있다는 것을 더 쉽게 볼 수 있도록 하기 위해 흰색 바닥은 그렇게 하지 않을 것입니다. 만들기 `Wahooney의 뛰어난 프리 텍스처 생성기 <https://wahooney.itch.io/texture-grid-generator>`_을 사용한 텍스처. 텍스처를 생성한 후 프로젝트에 추가합니다. 그런 다음 MeshInstance3D 노드에 대한 새 재질을 만들고 텍스처를 알베도로 추가한 다음 재질 속성의 **UV1**에서 **Triplaner**를 활성화합니다.
직접 이동
기초적인 직접 이동 방식을 먼저 설정해 보겠습니다. 이는 조이스틱 입력으로 이동하는 방식입니다.
참고
현실 세계에서는 가만히 서 있는데 가상 공간에서는 이동하는 것은 멀미를 유발할 수 있고, 특히나 VR을 처음 사용하는 사람에게는 더 그렇습니다. 우리의 이동 기능은 기본적으로 꽤 보수적으로 설정되어 있습니다. 따라서 여러분도 기본값을 사용하길 권장 드리지만 VR 게임에 익숙한 사용자를 위해 설정을 제공해 주는 것도 좋겠습니다.
우리는 이 기능을 오른손 컨트롤러에 할당하고 싶습니다. 따라서 오른손 XRController3D <class_xrcontroller3d>`에 ``addons/godot-xr-tools/functions/movement_direct.tscn` 자식 씬을 추가합니다.
이 기능은 플레이어가 오른손 컨트롤러를 사용해 앞뒤로 움직일 수 있게 합니다. 왼쪽/오른쪽 횡이동도 활성화 할 수 있지만 기본적으로 비활성화되어 있습니다.
대신에 조이스틱을 사용해 회전할 수 있는 기능을 추가하겠습니다. 이를 위해 컨트롤러 노드에 다른 자식 씬으로 ``addons/godot-xr-tools/functions/movement_turn.tscn``를 추가합니다.
회전 시스템은 기본적으로 스냅(snap) 턴 기법을 사용합니다. 이는 단계별 회전을 의미하는데, 거슬려 보일수도 있지만 사실은 멀미를 감소시키기 위한 방법입니다. 보다 부드러운 회전은 회전 노드의 mode 속성을 바꾸어 활성화 할 수 있습니다.
게임을 실행하면 오른쪽 조이스틱을 사용해 자유롭게 움직일 수 있습니다.
텔레포트
직접 이동의 대안으로 텔레포트를 사용해 게임 공간의 다른 위치로 이동하는 것이 더 편리할 수 있습니다. Godot XR 도구에서는 텔레포트 기능을 제공하고 이 기능을 왼쪽 컨트롤러에 추가해 보겠습니다.
왼손 XRController3D 노드에 addons/godot-xr-tools/functions/function_teleport.tscn 자식 씬을 추가합니다.
이 씬이 추가되면 플레이어는 왼손 컨트롤러의 트리거를 누르고, 가고 싶은 방향을 가리킨 뒤, 트리거를 뗌으로써 공간을 텔레포트 할 수 있습니다. 또한 왼손 컨트롤러의 조이스틸을 사용해 방향을 조정할 수도 있습니다.
안내한 사항대로 모두 진행했다면 여러분의 씬은 아래와 같을 것입니다:
고급 이동 기능
Godot XR 툴은 활공, 그래플 후크 구현, 제트팩, 등반 매커니즘 등 다양한 이동 기능을 추가합니다.
대부분은 지금까지 알아본 기초 이동 기능과 유사하게, 필요한 씬을 플러그인에서 컨트롤러의 자식 씬으로 추가하기만 하면 됩니다.
튜토리얼의 뒷 부분에서 몇 가지 기능을 보다 상세하게 살펴볼텐데 이것은 (등반과 같이) 부가적인 준비가 필요한 경우이지만 다른 기능에 대해서는 Godot XR 툴의 도움말 페이지를 살펴보시기 바랍니다.