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.
З чого почати¶
- Новачкам — 02 — Швидкий старт, потім 14 — Покрокові уроки. Незнайомі терміни пояснено у словнику.
- Досвідченим — Архітектура і 13 — Мережева модель.