Les composants interactifs sont des composants Scene Graph conçus pour simplifier les interactions de base des joueurs dans l'UEFN.
Ces composants permettent aux agents d'interagir avec l'entité à laquelle les composants sont associés.
L'interaction est définie par l'agent qui tente de démarrer l'interaction et qui indique si l'interaction a réussi (par exemple, en appuyant sur la touche E sur un PC). Le composant ne détermine pas ce que fait une interaction, il gère uniquement l'échange entre l'agent qui interagit et le composant interactif.
interactable_component
Le interactable_component est la base permettant aux joueurs d'interagir avec les objets d'un jeu.
Les interactions se produisent généralement lorsqu'un joueur appuie sur le bouton d'interaction à côté d'un objet. Ce composant de base permet l'interactivité minimale requise pour déclencher un événement de jeu.
Le interactable_component doit être associé à un mesh_component pour fonctionner.
À l'aide de Verse, vous pouvez remplacer le comportement par défaut du composant pour créer des interactions personnalisées. Consultez la référence de l'API de classe interactable_component pour plus d'informations.
Classe Verse
La classe interactable_component peut démarrer une interaction et gérer les délais de récupération pour le composant et pour chaque agent qui interagit avec lui.
# 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.
Exemples
Dans ce premier exemple, l'utilisateur peut interagir avec un maillage pour faire passer l'état de Activé à Désactivé. L'entité est composée d'un mesh_component d'un ordinateur et du interactable_enableable_component personnalisé.
Vous trouverez ci-dessous le code utilisé pour le 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"
Dans ce deuxième exemple, l'interaction déclenche l'allumage de la lumière à l'intérieur de la lanterne. L'entité est composée d'un composant de maillage de lampe et du interactable_enableable_light_component.
Vous trouverez ci-dessous le code utilisé pour le 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
Cette fonctionnalité est en phase expérimentale pour vous permettre de l'essayer, de nous faire part de vos commentaires et de prendre connaissance de ce que nous prévoyons pour l'avenir. Nous attirons votre attention sur le fait que nous ne garantissons aucune compatibilité descendante pour les ressources créées en phase expérimentale, que les API de ces fonctionnalités sont susceptibles d'évoluer et que nous pouvons éventuellement supprimer des fonctionnalités expérimentales ou autres à notre discrétion. Consultez la liste des problèmes connus avant de commencer à utiliser cette fonctionnalité.
Le basic_interactable_component donne plus de contrôle sur les paramètres d'interaction.
Le composant interactif de base permet de définir une durée que l'interaction doit atteindre pour être réussie. Il gère cette complexité en autorisant potentiellement plusieurs interactions simultanées.
Il permet également de gérer le délai de récupération entre chaque interaction, qui peut varier en fonction de l'agent en interaction.
Les interactions sont régies par la 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