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.

Базовая XR-передвижка

Для базовых функций передвижения мы продолжим использовать нашу библиотеку Godot XR Tools. Она содержит как базовые функции движения, так и более продвинутые.

Добавляем тело игрока

Первый шаг — добавить вспомогательный узел к нашему узлу XROrigin3D. Поскольку XR поддерживает отслеживание в масштабе комнаты, вы не можете просто добавить настройку XR к узлу CharacterBody3D и ожидать, что всё заработает. Вы столкнётесь с проблемами, когда пользователь переместится в своём физическом пространстве и перестанет стоять в центре комнаты. Godot XR Tools встраивает необходимую логику во вспомогательный узел PlayerBody.

Выберите узел XROrigin3D и нажмите кнопку Instantiate Child Scene, чтобы добавить дочернюю сцену. Выберите addons/godot-xr-tools/player/player_body.tscn и добавьте этот узел.

Добавление этажа

Этот узел управляет движением вашего персонажа в игре и мгновенно реагирует на гравитацию. Поэтому, чтобы предотвратить бесконечное падение игрока, мы быстро добавим к сцене пол.

Начнем с добавления узла StaticBody3D к нашему корневому узлу и переименуем его в Floor. Мы добавляем узел MeshInstance3D в качестве дочернего узла для нашего Floor. Затем создаем новый PlaneMesh в качестве его сетки. На данный момент мы устанавливаем размер сетки 100 x 100 метров. Затем мы добавляем узел CollisionShape3D в качестве дочернего узла для нашего Floor. Затем создаем BoxShape в качестве нашей формы. Мы устанавливаем размер этой формы коробки 100 x 1 x 100 метров. Нам также нужно переместить нашу форму столкновения вниз на 0,5 метра, чтобы верх нашего ящика был вровень с полом.

To make it easier to see that we're actually moving around our world, a white floor isn't going to do it. Create a texture using Wahooneys excellent free texture generator. Once you've created the texture add it to your project. Then create a new material for the MeshInstance3D node, add your texture as the albedo, and enable Triplanar under UV1 in the material properties.

../../_images/godot_xr_tools_floor.webp

Прямое движение

Мы начнём добавлять в нашу систему базовые функции прямого перемещения. Это позволит пользователю перемещаться по виртуальному миру, используя джойстик.

Примечание

Важно отметить, что перемещение по виртуальному миру, когда игрок неподвижен в реальном мире, может вызывать тошноту, особенно у новичков в виртуальной реальности. Настройки функций перемещения по умолчанию довольно консервативны. Мы рекомендуем придерживаться этих настроек по умолчанию, но предлагаем в игре функции, которые позволяют настроить менее комфортные параметры для более опытных пользователей, привыкших к VR-играм.

Мы хотим включить это на правом контроллере. Для этого добавляем подсцену к правому узлу XRController3D. Выберите addons/godot-xr-tools/functions/movement_direct.tscn в качестве добавляемой сцены.

Эта функция добавляет игроку возможность двигаться вперёд и назад с помощью джойстика на правом контроллере. Также есть возможность добавить стрейф влево/вправо, но по умолчанию эта возможность отключена.

Вместо этого мы добавим игроку возможность поворачиваться с помощью этого джойстика. Добавим ещё одну подсцену к узлу контроллера, для этого выберем addons/godot-xr-tools/functions/movement_turn.tscn.

Система поворота по умолчанию использует метод «мгновенного поворота». Это означает, что поворот происходит пошагово. Это может показаться неудобным, но это проверенный метод борьбы с укачиванием. Вы можете легко переключиться в режим плавного поворота, изменив свойство mode узла поворота.

Если вы запустите игру на этом этапе, вы обнаружите, что можете свободно перемещаться по миру, используя правый джойстик.

Телепорт

Альтернативой прямому перемещению, которую некоторые пользователи находят более приятной, является возможность телепортироваться в другое место игрового мира. Godot XR Tools поддерживает эту функцию телепортации, и мы добавим её в наш левый контроллер.

Добавьте новую дочернюю сцену в узел левой руки XRController3D, выбрав сцену addons/godot-xr-tools/functions/function_teleport.tscn.

С этой сценой игрок сможет телепортироваться по всему миру, нажимая на курок на левом контроллере, указывая направление и отпуская курок. Игрок также может менять ориентацию, используя джойстик на левом контроллере.

Если вы правильно выполнили все инструкции, ваша сцена должна выглядеть примерно так:

../../_images/godot_xr_tools_basic_movement.webp

Более продвинутые функции движения

Godot XR Tools добавляет множество дополнительных функций движения, таких как планирование, реализация крюка-кошки, реактивный ранец, механика скалолазания и т. д.

Большинство из них работают аналогично базовым функциям движения, с которыми мы справились до сих пор, просто добавьте соответствующую подсцену из плагина в контроллер, который ее реализует.

Мы рассмотрим некоторые из них более подробно далее в этом руководстве, где требуется дополнительная настройка (например, скалолазание), но для получения подробной информации о других, пожалуйста, обратитесь к собственным страницам справки Godot XR Tools.