Компоненты взаимодействия — это компоненты Scene Graph, призванные упростить базовое взаимодействие для игроков в UEFN.
Эти компоненты позволяют агентам взаимодействовать с модулем, к которому они прикреплены.
Взаимодействие определяется тем, что агент пытается запустить и получает сигнал об успешном взаимодействии, — например, нажимает клавишу E на клавиатуре. Компонент не предписывает, что делать при взаимодействии, а только обрабатывает установление связи между взаимодействующим агентом и интерактивным компонентом.
interactable_component
interactable_component — это основа, которая позволяет игрокам взаимодействовать с объектами в игре.
Взаимодействие обычно происходит, когда игрок нажимает на кнопку взаимодействия рядом с объектом. Этот базовый компонент обеспечивает минимальное взаимодействие, необходимое для активации игрового события.
Для работы interactable_component должен быть прикреплён к mesh_component.
В Verse вы можете переопределить поведение компонента по умолчанию для создания пользовательских взаимодействий. Для получения более подробной информации см. в статье Класс interactable_component справочника по API.
Класс Verse
Класс interactable_component может инициировать взаимодействие и управлять временем ожидания как для компонента, так и для каждого агента, который взаимодействует с ним.
# An interactable component allows an agent to start and succeed at an interaction.
# The functionality of what happens on success should be implemented by overriding the success event.
interactable_component<public> := class(component, enableable):
# Set the enable/disable for interaction of the component.
Enable<override>()<transacts> : void
Disable<override>()<transacts> : void
IsEnabled<override>()<decides><reads> : void
# Event fires when an interaction starts. Sends the interacting agent.
Примеры
В этом первом примере пользователь может взаимодействовать с сеткой, которая меняет своё состояние с включенного на отключённое. Модуль состоит из mesh_component компьютера и настраиваемого interactable_enableable_component.
Ниже приведён код, используемый для interactable_enable_component:
using { /Verse.org }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
using { /Fortnite.com/Game }
# Allows a Enable/Disable state on the interactable_component
interactable_enableable_component<public> := class<final_super>(interactable_component):
# Default text to show on the UI
EnabledText<localizes> : message = "Enabled"
Во втором примере взаимодействие активирует свет фонаря. Модуль состоит из компонента сетки лампы и компонента interactable_enable_light_component.
Ниже приведён код для interactable_enable_light_component:
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
# Will turn on/off a light after interacting with the entity
interactable_enableable_light_component<public> := class<final_super>(interactable_enableable_component):
# Entity who has the light_component attached
@editable
basic_interactable_component
Эта функция находится на этапе экспериментальной версии. Вы можете опробовать её, оставить отзыв и узнать, что мы планируем делать с ней дальше. Обратите внимание: мы не можем гарантировать обратную совместимость ресурсов, созданных на экспериментальном этапе. API для этих функций могут меняться, и мы можем полностью удалить экспериментальные функции или отдельные их части по своему усмотрению. Прежде чем приступать к работе с этой функцией, ознакомьтесь со списком известных проблем.
Компонент basic_interactable_component обеспечивает больше контроля над параметрами взаимодействия.
Базовый компонент взаимодействия позволяет задать взаимодействию определённое время, которое должно пройти, прежде чем взаимодействие завершится успешно, и потенциально решает эту задачу, допуская несколько взаимодействий одновременно.
Также он позволяет управлять временем ожидания между взаимодействиями, которое может варьироваться в зависимости от взаимодействующего агента.
Взаимодействия реализуются с помощью класса Verse basic_interactable_component.
Класс Verse
# An interactable component with a composable feature set.
basic_interactable_component<public> := class(interactable_component):
# Cooldowns begin elapsing on successful interactions. A cooldown which applies for all attempts to interact on this component.
@editable
Cooldown<public> : ?interactable_cooldown = false
# Cooldowns begin elapsing on successful interactions. A cooldown which applies for future attempts to interact on this component by the agent which succeeded.
@editable
CooldownPerAgent<public> : ?interactable_cooldown_per_agent = false