Komponenty interaktywne to komponenty Scene Graph zaprojektowane w celu uproszczenia podstawowych interakcji gracza w UEFN.
Komponenty te umożliwiają agentom interakcję z jednostką, do której są dołączone komponenty.
Interakcja jest definiowana przez agenta, który próbuje się rozpocząć, a przy okazji sygnalizowano mu powodzenie interakcji – na przykład przez naciśnięcie klawisza E na komputerze. Komponent nie określa, co robi interakcja, a jedynie obsługuje uzgadnianie między agentem a interaktywnym komponentem.
interactable_component
Komponent interactable_component stanowi podstawę przyznawania graczom możliwości interakcji z obiektami w grze.
Do interakcji zwykle dochodzi, gdy gracz naciśnie przycisk interakcji obok obiektu. Ten komponent bazowy zapewnia minimalną wymaganą liczbę interakcji, aby aktywować zdarzenie w grze.
Komponent interactable_component musi być dołączony do komponentu mesh_component, aby działał.
Za pomocą Verse można zastąpić domyślne zachowanie komponentu, tworząc interakcje niestandardowe. Więcej szczegółów można znaleźć w dokumentacji API klasy interactable_component.
Klasa Verse
Klasa interactable_component może rozpoczynać interakcję i zarządzać czasami odnowienia zarówno dla komponentu, jak i każdego agenta, który z nim wchodzi w interakcję.
# 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.
Przykłady
W tym pierwszym przykładzie użytkownik może wchodzić w interakcję z siatką, której stan zmienia się z Enabled na Disabled. Jednostka składa się z komponentu mesh_component komputera i dostosowanego komponentu interactable_enableable_component.
Poniżej przedstawiono kod komponentu interactable_enableable_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"
W tym drugim przykładzie interakcja aktywuje włączenie światła wewnątrz latarni. Jednostka składa się z komponentu siatki lampy (lamp mesh component) oraz komponentu interactable_enableable_light_component.
Poniżej znajduje się kod komponentu interactable_enableable_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
Funkcja ta jest w stanie eksperymentalnym, więc możesz ją wypróbować, przesłać swoją opinię i zobaczyć, co planujemy wdrożyć. Pamiętaj, że nie gwarantujemy kompatybilności wstecznej zasobów utworzonych na etapie eksperymentalnym, interfejsy API tych funkcji mogą ulec zmianie i możemy wedle własnego uznania usunąć całe funkcje eksperymentalne lub określone funkcje. Przed rozpoczęciem pracy z tą funkcją sprawdź listę znanych problemów.
Komponent basic_interactable_component daje większy Control nad parametrami interakcji.
Podstawowy komponent z możliwością interakcji określa czas trwania interakcji, który musi upłynąć, zanim interakcja osiągnie powodzenie, i potencjalnie radzi sobie ze złożonością związaną z tym, pozwalając na wiele interakcji jednocześnie.
Umożliwia również zarządzanie czasem oczekiwania między każdą interakcją, który może się różnić zależnie od agenta wchodzącego w interakcję.
Interakcjami zarządza klasa Verse basic_interactable_component.
Klasa 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