Los componentes interactivos son componentes de Scene Graph diseñados para simplificar las interacciones básicas de los jugadores en UEFN.
Estos componentes permiten que los agentes interactúen con la entidad a la que están asociados.
La interacción se define por el agente que intenta iniciar y recibe una señal del éxito de la interacción; por ejemplo, al presionar la tecla E en PC. El componente no dicta lo que hace una interacción, sino que solo controla el apretón de manos entre el agente que interactúa y el componente interactuable.
interactable_component
El interactable_component es la base para otorgar a los jugadores la capacidad de interactuar con objetos en un juego.
Las interacciones suelen ocurrir cuando un jugador presiona el botón de interacción junto a un objeto. Este componente base permite la interactividad mínima necesaria para activar un evento de juego.
El interactable_component debe adjuntarse a un mesh_component para funcionar.
Con Verse, puedes anular el comportamiento predeterminado del componente para crear interacciones personalizadas. Consulta la referencia de la API de la clase interactable_component para obtener más detalles.
Clase de Verse
La clase interactable_component puede iniciar una interacción y administrar los tiempos de reutilización tanto para el componente como para cada agente que interactúa con él.
# 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.
Ejemplos
En este primer ejemplo, el usuario puede interactuar con una malla que modifica el estado de Habilitado a Deshabilitado. La entidad está compuesta por un mesh_component de una computadora y el interactable_enable_component personalizado.
A continuación, se muestra el código utilizado para 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"
En este segundo ejemplo, la interacción hace que la luz se encienda dentro de la linterna. La entidad está formada por un componente de malla de lámparas y el interactable_enableable_light_component.
A continuación, se muestra el código utilizado para 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
Esta función se encuentra en una fase experimental, de modo que puedes probarla, dejarnos tus comentarios y conocer nuestros planes. Ten en cuenta que no podemos garantizar la retrocompatibilidad para los recursos creados en la fase experimental. Las API para estas funciones están sujetas a cambios, y podríamos retirar funciones experimentales en su totalidad o funcionalidades específicas conforme lo consideremos. Consulta la lista de problemas conocidos antes de empezar a trabajar con la función.
El basic_interactable_component da más control sobre los parámetros de interacción.
El componente interactivo básico permite que las interacciones tengan una duración que debe transcurrir antes de que la interacción tenga éxito, y maneja la complejidad en torno a esto potencialmente al permitir múltiples interacciones simultáneamente.
También permite administrar el tiempo de recuperación entre cada interacción, que puede variar según el agente que interactúa.
Las interacciones se rigen por la clase de Verse basic_interactable_component.
Clase de 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