Interaktionsfähige Komponenten sind Scene Graph-Komponenten, die grundlegende Spielerinteraktionen in UEFN vereinfachen sollen.
Diese Komponenten ermöglichen es den Agenten, mit der Entität zu interagieren, mit der die Komponenten verbunden sind.
Interaktion ist dadurch definiert, dass der Agent versucht, die Interaktion zu starten, und dass ihm der Erfolg der Interaktion signalisiert wird - z. B. durch Drücken der E Taste auf dem PC. Die Komponente diktiert nicht, was eine Interaktion tut, sondern wickelt nur den Handshake zwischen dem interagierenden Agenten und der interaktionsfähigen Komponente ab.
interactable_component
Die interactable_component ist die Basis dafür, Spielern die Fähigkeit zu gewähren, mit Objekten in einem Spiel zu interagieren.
Interaktionen finden normalerweise statt, wenn ein Spieler die Schaltfläche Interaktion neben einem Objekt drückt. Diese Basiskomponente ermöglicht die minimal erforderliche Interaktivität, um ein Spiel-Event auszulösen.
Die interactable_component muss an eine mesh_component angehängt werden, damit sie funktioniert.
Mit Verse kannst du das Standardverhalten der Komponente überschreiben, um benutzerdefinierte Interaktionen zu erstellen. Weitere Details findest du in der interactable_component class API reference.
Verse-Klasse
Die Klasse interactable_component kann eine Interaktion starten und Abklingzeiten sowohl für die Komponente als auch für jeden Agenten, der mit ihr interagiert, verwalten.
# 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.
Beispiele
In diesem ersten Beispiel kann der Benutzer mit einem Mesh interagieren, das den Zustand von Aktiviert zu Deaktiviert ändert. Die Entität besteht aus einer mesh_component eines Computers und der personalisierten interactable_enableable_component.
Nachstehend findest du den Code, der für die Komponente interactable_enable_component verwendet wird:
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"
In diesem zweiten Beispiel führt die Interaktion dazu, dass das Licht in der Laterne angeht. Die Entität besteht aus einer Lampen-Mesh-Komponente und der interactable_enable_light_component.
Nachfolgend siehst du den Code, der für die interactable_enableable_light_component verwendet wird:
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
Diese Funktion befindet sich im experimentellen Zustand. Du kannst sie ausprobieren, Feedback geben und sehen, was wir planen. Beachte, dass wir für Assets, die mit dem Status Experimentell erstellt wurden, keine Rückwärtskompatibilität garantieren können, dass die APIs für diese Funktionen Änderungen unterliegen und dass wir uns vorbehalten, ganze experimentelle Funktionen oder bestimmte Funktionalität zu entfernen. Sieh dir die list of known issues an, bevor du mit der Funktion arbeitest.
Die basic_interactable_component gibt mehr Kontrolle über die Interaktionsparameter.
Die grundlegende interaktionsfähige Komponente erlaubt es, dass Interaktionen eine Dauer haben, die vergehen muss, bevor die Interaktion erfolgreich ist, und sie bewältigt die damit verbundene Komplexität potenziell, indem sie mehrere Interaktionen gleichzeitig zulässt.
Außerdem erlaubt es, die Abklingzeit zwischen den einzelnen Interaktionen zu verwalten, die je nach interagierendem Agenten variieren kann.
Interaktionen werden über die Verse-Klasse basic_interactable_component geregelt.
Verse-Klasse
# 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