Проектирование системы перемещения (Teleportation/Locomotion) в VR

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

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Проектирование системы перемещения (Teleportation/Locomotion) в VR
Сложная
~1-2 недели
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Проектирование системы перемещения (Teleportation/Locomotion) в VR

Движение в VR — это не геймплейная мелочь. Это основная причина, по которой игроки бросают VR-игры в первые 20 минут или возвращаются каждый день. Неправильно реализованная локомоция — прямой путь к motion sickness. Правильная — это прозрачная система, которую игрок перестаёт замечать через несколько минут.

Физика дискомфорта: почему плавное движение тошнит

Motion sickness в VR возникает из-за vection — иллюзии движения при его отсутствии в реальности. Зрительная система сообщает мозгу «мы движемся», вестибулярный аппарат — «мы стоим», конфликт вызывает тошноту у 40–60% аудитории при первом опыте.

Плавное движение через стик — максимальный triгger для vection. Это не значит, что его нельзя использовать. Это значит, что его нужно реализовать с mitigation механиками.

Главный из них — locomotion vignette. При движении периферийное зрение (за пределами 40–50° от центра) затемняется через tinted overlay. Мозг воспринимает движение только центральной зоной, что снижает vection. В Unity это реализуется через post-processing Vignette effect с динамической интенсивностью, привязанной через RTPC к скорости движения, или через специализированный компонент — TunnelingVignette в XRIT 3.x (появился как опциональный провайдер в Locomotion System).

Параметры vignette для стартовой настройки: easeInTime = 0.15 с, easeOutTime = 0.3 с, featheringEffect = 0.3, vignetteIntensity = 0.6. Всё это нужно вынести в Comfort Settings — разные игроки имеют разный порог чувствительности.

Телепортация: не просто «перенести позицию»

Телепортация кажется простой: нажал кнопку, выбрал точку, переместился. На деле есть несколько деталей, которые разделяют «работает» и «работает хорошо».

Arc визуализация — парабола от контроллера к точке телепортации. В XRIT реализуется через XRRayInteractor в режиме Projectile Curve + TeleportationProvider. Параметры параболы: velocity = 8–12 (меньше — дуга слишком крутая, больше — слишком пологая), acceleration = -9.8 (гравитация). Точка попадания определяется через raycast против Teleportation Area/Anchor colliders с Layer Mask только на Teleportation слой.

Валидность точки телепортации. Нельзя телепортироваться в воздух, в стену, в NavMesh-недоступную зону. TeleportationArea проверяет только наличие коллайдера, не NavMesh. Если нужна проверка по NavMesh — кастомный TeleportationArea с override ValidateTeleportation, который вызывает NavMesh.SamplePosition в точке приземления.

Ориентация после телепортации. Простой вариант: сохранить текущую ориентацию. Лучший вариант: дать игроку указать направление взгляда после телепортации через ротацию стика в момент удержания кнопки. TeleportationProvider поддерживает MatchOrientation = TargetUpAndForward — XR Origin поворачивается так, что игрок после телепортации смотрит в направлении, указанном при выборе точки.

Transition анимация. Мгновенная телепортация — резкая. Fade to black + fade in за 0.2–0.3 с — не задерживает игрока, но убирает «прыжок» камеры. Реализация: ScreenFadeProvider в Locomotion System, который перехватывает TeleportationProvider.teleportRequest и добавляет fade через корутину перед фактическим перемещением XR Origin.

Гибридная система: когда нужны оба типа

Большинство современных VR-игр используют оба типа локомоции и дают игроку выбор в настройках. Архитектура Locomotion System в XRIT это поддерживает: на одном LocomotionSystem можно зарегистрировать несколько LocomotionProvider одновременно.

Важный нюанс: ContinuousMoveProvider и TeleportationProvider могут конфликтовать при одновременном вводе. LocomotionSystem имеет exclusivityMode — когда один провайдер активен, другие блокируются. Это правильное поведение, но нужно убедиться, что приоритеты расставлены корректно: телепортация должна иметь приоритет над плавным движением (при нажатии кнопки телепортации — плавное движение прекращается).

Snap Turn vs Smooth Turn

Snap Turn — мгновенный поворот на фиксированный угол (обычно 30°, 45° или 60°). Не вызывает дискомфорта — нет continuous rotation. Реализуется через SnapTurnProvider. Настройки: turnAmount = 45°, debounceTime = 0.2 с (чтобы не вращаться слишком быстро при удержании стика).

Smooth Turn — непрерывный поворот через ContinuousTurnProvider. Вызывает меньше дискомфорта, чем плавное движение вперёд, но всё равно неприятен части аудитории. Максимально допустимая скорость поворота для comfort: 60–90°/с.

Для боевых игр, где важна быстрая ориентировка — hybrid: snap turn с небольшим углом (22.5° или 30°) позволяет быстро разворачиваться без дискомфорта.

Сроки проектирования и реализации

Система Ориентировочные сроки
Базовая телепортация (XRIT из коробки) 3–5 дней
Телепортация + smooth + snap + настройки 1–2 недели
Кастомная система с NavMesh + transition + vignette 2–4 недели
Полная locomotion система с comfort profiles 3–5 недель

Стоимость рассчитывается после анализа игровых требований и целевых платформ.