Базовая XR-передвижка
Для базовых функций передвижения мы продолжим использовать нашу библиотеку Godot XR Tools. Она содержит как базовые функции движения, так и более продвинутые.
Добавляем тело игрока
Первый шаг — добавить вспомогательный узел к нашему узлу XROrigin3D. Поскольку XR поддерживает отслеживание в масштабе комнаты, вы не можете просто добавить настройку XR к узлу CharacterBody3D и ожидать, что всё заработает. Вы столкнётесь с проблемами, когда пользователь переместится в своём физическом пространстве и перестанет стоять в центре комнаты. Godot XR Tools встраивает необходимую логику во вспомогательный узел PlayerBody.
Выберите узел XROrigin3D и нажмите кнопку , чтобы добавить дочернюю сцену. Выберите 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 метра, чтобы верх нашего ящика был вровень с полом.
Чтобы было проще увидеть, что мы действительно движемся по миру, белый пол не подойдёт. Создайте текстуру с помощью отличного бесплатного генератора текстур Wahooney. После создания текстуры добавьте её в свой проект. Затем создайте новый материал для узла MeshInstance3D, добавьте текстуру в качестве альбедо и включите Triplaner в UV1 в свойствах материала.
Прямое движение
Мы начнём добавлять в нашу систему базовые функции прямого перемещения. Это позволит пользователю перемещаться по виртуальному миру, используя джойстик.
Примечание
Важно отметить, что перемещение по виртуальному миру, когда игрок неподвижен в реальном мире, может вызывать тошноту, особенно у новичков в виртуальной реальности. Настройки функций перемещения по умолчанию довольно консервативны. Мы рекомендуем придерживаться этих настроек по умолчанию, но предлагаем в игре функции, которые позволяют настроить менее комфортные параметры для более опытных пользователей, привыкших к 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.
С этой сценой игрок сможет телепортироваться по всему миру, нажимая на курок на левом контроллере, указывая направление и отпуская курок. Игрок также может менять ориентацию, используя джойстик на левом контроллере.
Если вы правильно выполнили все инструкции, ваша сцена должна выглядеть примерно так:
Более продвинутые функции движения
Godot XR Tools добавляет множество дополнительных функций движения, таких как планирование, реализация крюка-кошки, реактивный ранец, механика скалолазания и т. д.
Большинство из них работают аналогично базовым функциям движения, с которыми мы справились до сих пор, просто добавьте соответствующую подсцену из плагина в контроллер, который ее реализует.
Мы рассмотрим некоторые из них более подробно далее в этом руководстве, где требуется дополнительная настройка (например, скалолазание), но для получения подробной информации о других, пожалуйста, обратитесь к собственным страницам справки Godot XR Tools.