I componenti interattivi sono componenti del Scene Graph progettati per semplificare le interazioni di base dei giocatori in UEFN.
Questi componenti consentono agli agenti di interagire con l'entità a cui sono collegati.
L'interazione è definita dall'agente che tenta di avviare e viene segnalato l'esito positivo dell'interazione, ad esempio premendo il tasto E su PC. Il componente non determina cosa fa un'interazione, ma gestisce solo l'handle tra l'agente interagente e il componente interattivo.
interactable_component
interactable_component è la base per garantire ai giocatori la possibilità di interagire con gli oggetti in un gioco.
Le interazioni si verificano in genere quando un giocatore preme il pulsante di interazione accanto a un oggetto. Questo componente di base consente l'interattività minima richiesta per attivare un evento di gioco.
interactable_component deve essere collegato a un mesh_component per funzionare.
Utilizzando Verse, puoi eseguire l'override del comportamento predefinito del componente per creare interazioni personalizzate. Per maggiori dettagli, consulta il riferimento API della classe interactable_component.
Classe Verse
La classe interactable_component può avviare un'interazione e gestire i tempi di recupero sia del componente che di ogni agente che interagisce con esso.
# 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.
Esempi
In questo primo esempio, l'utente può interagire con una mesh che modifica lo stato da Abilitato a Disabilitato. L'entità è composta da un mesh_component di un computer e da interactable_enable_component personalizzato.
Di seguito è riportato il codice utilizzato per 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"
In questo secondo esempio, l'interazione attiva l'accensione della luce all'interno della lanterna. L'entità è costituita da un componente mesh lampada e da interactable_enable_light_component.
Di seguito è riportato il codice utilizzato per 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
Questa funzionalità è in stato sperimentale, quindi puoi provarla, fornire un feedback e vedere cosa stiamo pianificando. Ricorda che non garantiamo la retrocompatibilità per gli asset creati in fase sperimentale; le API per queste funzioni sono soggette a modifiche e che potremmo rimuovere intere funzioni sperimentali o funzionalità specifiche a nostra discrezione. Prima di iniziare a lavorare con la funzione, consulta l'elenco dei problemi noti.
basic_interactable_component offre un maggiore controllo sui parametri di interazione.
Il componente interattivo di base consente alle interazioni di avere una durata che deve trascorrere prima che l'interazione abbia esecuzione con successo, e gestisce la complessità che ne deriva potenzialmente consentendo più interazioni contemporaneamente.
Consente inoltre di gestire il tempo di raffreddamento tra ogni interazione, che può variare in base all'agente.
Le interazioni sono regolate dalla classe Verse basic_interactable_component.
Classe 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