Вибір і налаштування XR Interaction Toolkit для механік ігор

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

Від імерсивних застосунків до ігрових світів і 3D-сцен

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Вибір і налаштування XR Interaction Toolkit для механік ігор
Середня
~3-5 робочих днів
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Вибір та настройка XR Interaction Toolkit для механік ігор

XR Interaction Toolkit (XRIT) — офіційний пакет Unity для VR/AR взаємодій. Звучить як «беремо з Package Manager та готово». На практиці: має свою архітектуру, своє компроміси, неправильна настройка дає механіки, які працюють не так, як очікувалось, або performance проблеми через лишні update-цикли.

Версія має значення

XRIT 2.x та 3.x — це фактично різні системи. Версія 3.x переписала Input handling з Legacy Input Manager на новий Input System, змінила архітектуру Interactor/Interactable, додала Affordance System для візуальних станів. Якщо проект починав на 2.5, а документацію читали для 3.0 — частина API просто не існує.

Перед початком настройки: зафіксувати версію XRIT у manifest.json, переконатися, що Input System Package (com.unity.inputsystem) версії ≥ 1.6, та що XR Plugin Management налаштований під цільові платформи. Без явного вказівника OpenXR Loader або Oculus XR Plugin у XR Plug-in Management багато компонентів XRIT просто не ініціалізуються без ясного повідомлення про помилку.

XR Origin: правильна структура сцени

Корінь всієї VR-сцени — XR Origin. Неправильна його настройка — джерело 80% проблем з позиціонуванням та масштабом.

Tracking Origin Mode повинен відповідати типу гри. Floor — для room-scale, гравець стоїть на полу, Y=0 це реальний пол. Device — для stationary, початок координат там, де шлем при старті. Якщо вибрати неправильно, аватар гравця виявиться либо під полом, либо в повітрі.

Camera Floor Offset Object — проміжний об'єкт між XR Origin та Camera Offset. Його Y-позиція у Device-режимі задає віртуальну висоту очей (зазвичай 1.5–1.8 м). У Floor-режимі його Y = 0.

Структура ієрархії: XR Origin → Camera Offset → Main Camera (шлем) + LeftHand Controller + RightHand Controller. Додавати ігрові об'єкти напрямку до Camera Offset — погана практика: вони рухаються з головою. Елементи, які повинні бути в світі — повинні бути у світовому просторі.

Настройка XRGrabInteractable під конкретні механіки

Стандартний XRGrabInteractable працює з коробки для простих випадків. Для нестандартних — потрібно розуміти його внутрішність.

Movement Type визначає, як об'єкт слідує за рукою:

  • Instantaneous — телепортується до позиції attach point щокадру. Немає фізики. Для інтерфейсних елементів.
  • Kinematic — Rigidbody переміщується через MovePosition/MoveRotation. Коректно взаємодіє з іншими Rigidbody та коллайдерами, але може «проходити» через статичні colliders при високій швидкості.
  • VelocityTracking — об'єкт отримує velocity, яка тягне його до цільової позиції. Найбільш «фізичний» варіант, кращий для об'єктів, які можуть бути заблоковані іншими об'єктами. Вимагає тонкої настройки TrackingSpeed та TrackingRotationSpeed.

Для оружія зазвичай VelocityTracking з TrackingSpeed = 12–15 та окремою обробкою кидка через SelectExited event + Rigidbody.AddForce з розрахунком velocity з історії позицій за останні 5 кадрів.

Attach Transform — критично важливий параметр, який часто не настройюють. Без явного Attach Transform об'єкт прикріплюється до позиції контролера — це правильно тільки якщо хват повинен бути у основи. Для меча attach point повинен бути у рукояті; для пістолета — у рукоятці з правильним кутом. Створюємо пустий child-об'єкт з потрібною позицією та ротацією, призначаємо у поле Attach Transform.

Socket Interactor для розміщення об'єктів

XRSocketInteractor — для механік «положити об'єкт на полицю/в слот». Часті проблеми: об'єкт прибуває при snapping якщо Snap Threshold занадто великий (рекомендуємо 0.1–0.2 м), або snap не відбувається якщо Interactor Layer Mask не співпадає з тегами Interactable. Перевіряємо: на XRSocketInteractor Interaction Layer Mask повинен включати шари всіх об'єктів, які можна положити у слот.

Для складних механік (оружие з модулями, головоломки зі збіркою) стандартний Socket часто недостатній — пишемо кастомний Interactor з наслідуванням від XRBaseInteractor, переопределяємо CanHover та CanSelect з додатковими умовами (тип об'єкту, орієнтація, стан).

Ray Interactor для UI та дистанційної взаємодії

XRRayInteractor + XRUIInputModule для взаємодії з World Space Canvas. Типова проблема: ray проходит сквозь UI-елементи або спрацьовує на елементи за іншими елементами. Рішення: правильний sorting layer на Canvas та Blocked Physics Raycasts = true на GraphicRaycaster.

Для ігрових об'єктів XRRayInteractor у парі з XRInteractableSnapVolume дає «притягування» луча до центра об'єкту при приближенні — покращує точність взаємодії з дрібними об'єктами без зміни коллайдера.

Задача по настройці Ориентировочні терміни
Базова настройка XRIT (grab + ray + socket) 3–5 днів
Кастомні Interactor/Interactable під механіки 1–2 тижня
Повна система взаємодій для гри 3–6 тижнів

Вартість розраховується після аналізу ігрових механік та цільових платформ.