Skip to content

01 — Вступ

🇬🇧 English | 🇺🇦 Українська

InteractionSystem 1.0 — система взаємодії для Unreal Engine 5.8: гравець наводить погляд або руку на предмет, бачить підказку, бере предмет, використовує його, кидає. Те саме працює для desktop, mobile і VR, в одиночній і мережевій грі.

Яку задачу вона розв'язує

Здається, що «взяти предмет» — це один промінь і одне прикріплення. На практиці швидко з'являються складніші питання:

  • як показати підказку лише для того, що справді можна взяти, і не підсвічувати предмет за стіною;
  • що робити, коли два гравці хапають один предмет одночасно;
  • як не дати читеру «дотягнутися» до предмета через пів карти;
  • як тримати предмет двома VR-руками, масштабувати панель, крутити маховик чи вставити стрілу в лук;
  • як зробити, щоб рух предмета в руці не смикався в інших гравців.

Без готової системи кожен проєкт розв'язує це заново: промінь у Tick персонажа, прикріплення актора до руки, власний прапорець «зайнято» і серія виправлень для мережі. InteractionSystem збирає ці рішення в перевірені компоненти.

Як це влаштовано: чотири ролі

Роль Хто Що робить
Джерело UInteractorComponent на pawn: камера або VR-рука Шукає предмет променем або сферою, показує фокус, надсилає запити на сервер
Ціль Актор з IInteractableInterface або з компонентом цілі захоплення Каже, чи можна з ним взаємодіяти, і реагує: відчиняється, вмикається, береться в руку
Суддя Сервер і реєстр UInteractionClaimSubsystem Перевіряє кожен запит і вирішує, хто що тримає
Виконавець руху UInteractionManipulationComponent на предметі Рухає взятий предмет за однією чи двома руками й розсилає його стан клієнтам

Простими словами. Уявіть музей із гардеробом. Ви показуєте на куртку (джерело й фокус), гардеробник перевіряє номерок (суддя й реєстр), і лише тоді куртку вам віддають (виконавець руху). Показати пальцем може кожен, але видає куртку лише гардеробник.

Клієнт одразу показує локальний фокус, тож підказки з'являються без затримки. Сервер повторює перевірки й ухвалює рішення: дозволити дію, відхилити з причиною або відпустити предмет. Плагін не нав'язує конкретного input mapping, VR SDK чи системи інвентарю.

Основні можливості

  • Тонкий промінь або сферичний sweep, ближній пошук біля долоні для VR, фільтри Gameplay Tags і Actor Tags.
  • Підказки й підсвітка для кожної руки окремо; вільна друга VR-рука працює незалежно.
  • Серверна перевірка кожного запиту з поясненням відмови (Claimed, NotReachable, InvalidPose тощо).
  • Предмет можуть тримати дві руки одного гравця: обертання, масштабування, точки хвату на sockets і компонентах.
  • Фізичне утримання (предмет упирається в стіни), кидок з обмеженням швидкості, спис, що встромляється в поверхню.
  • Обертові та лінійні ручки — маховики, шухляди — зокрема як частини складніших акторів.
  • Лук і стріла, посадкові місця для деталей, удари ребром, руйнування від ударів.
  • Ціль захоплення з правилами в Blueprint, без C++.
  • Мережеві межі в Project Settings → Plugins → Interaction System з перевизначенням на кожному компоненті.
  • Панель налагодження й консольні команди.
  • Незалежність від платформи: джерело нічого не знає про клавіші, сенсорний екран чи шолом. На desktop і mobile джерело-камера бере точку огляду pawn, а ваш ввід — клавіша, дотик, кнопка геймпада — просто викликає Request Grab, Request Release або Request Interaction; у VR кожна рука — окреме джерело. Плагін дозволяє Windows, Mac, Linux, iOS, Android та інші платформи з .uplugin.
  • Чотири демо-карти: InteractionLab, SpearRange, VRLab і Blueprint-версія VRLabBP.

З чого почати