Los componentes interactivos son componentes de Scene Graph diseñados para simplificar las interacciones básicas de los jugadores en UEFN.
Estos componentes habilitan a los agentes a interactuar con la entidad a la que están unidos los componentes.
La interacción viene definida por el intento del agente de iniciar, y la señal de que la interacción se ha realizado correctamente (por ejemplo, pulsar la tecla E en el ordenador). El componente no determina las acciones de una interacción, sino que se limita a gestionar la comunicación entre el agente que interactúa y el componente interactivo.
interactable_component
El interactable_component constituye la base para otorgar a los jugadores la capacidad de interactuar con los objetos de un juego.
Las interacciones normalmente se producen cuando un jugador pulsa el botón de interacción que se encuentra junto a un objeto. Este componente base habilita la interactividad mínima necesaria para activar un evento de juego.
El interactable_component tiene que estar unido a un mesh_component para que funcione.
Mediante Verse, puedes anular el comportamiento por defecto del componente para crear interacciones personalizadas. Consulta la referencia de la API de la clase interactable_component para obtener más información.
Clase de Verse
La clase interactable_component puede iniciar una interacción y gestionar los tiempos de enfriamiento tanto para el componente como para cada agente que interactúe 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 un ordenador y el interactable_enableable_component personalizado.
A continuación encontrarás 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 activa el encendido de la luz en el interior de la lámpara. La entidad está formada por un componente de malla de lámpara y el interactable_enableable_light_component.
A continuación encontrarás 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 estado experimental para que puedas probarla, hacernos llegar tus comentarios y ver lo que estamos planeando. Ten en cuenta que no garantizamos la compatibilidad con versiones anteriores de los recursos creados en la fase experimental, que es posible que realicemos cambios en las API de estas funciones y que eliminemos funciones experimentales completas o funcionalidades específicas según nuestro criterio. Consulta la lista de problemas conocidos antes de empezar a trabajar con la función.
El basic_interactable_component proporciona más control sobre los parámetros de interacción.
El componente básico interactivo permite que las interacciones tengan una duración que debe transcurrir antes de que la interacción se realice correctamente, y gestiona la complejidad en torno a este potencial permitiendo múltiples interacciones simultáneamente.
Además, permite gestionar el tiempo de enfriamiento entre cada interacción, que puede variar en función del agente que interactúe.
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