Componentes interativos são componentes do Scene Graph projetados para simplificar as interações básicas dos jogadores no UEFN.
Esses componentes permitem que os agentes interajam com a entidade à qual os componentes estão anexados.
Interação é definida pelo agente que tenta iniciá-la e pela sinalização de que foi bem-sucedida — por exemplo, pressionar a tecla E no PC. O componente não determina o que uma interação faz e apenas manuseia a comunicação entre o agente e o componente interativo.
interactable_component
O interactable_component é a base para conceder aos jogadores a capacidade de interagir com objetos em um jogo.
As interações geralmente acontecem quando um jogador pressiona o botão de interação ao lado de um objeto. Esse componente base permite a interatividade mínima necessária para acionar um evento de jogo.
O interactable_component precisa ser anexado a um mesh_component para funcionar.
Usando Verse, você pode substituir o comportamento padrão do componente para criar interações personalizadas. Consulte a referência da API da classe interactable_component para obter mais detalhes.
Classe Verse
A classe interactable_component pode iniciar uma interação e gerenciar tempos de recarga tanto para o componente quanto para cada agente que interage com ele.
# 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.
Exemplos
Neste primeiro exemplo, o usuário pode interagir com uma malha que modifica o estado de Habilitado para Desabilitado. A entidade é composta por um mesh_component de um computador e o interactable_enable_component personalizado.
Abaixo está o código usado para o 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"
Neste segundo exemplo, a interação aciona o acender da luz dentro do lampião. A entidade é composta de um componente de malha de luminária e o interactable_enableable_light_component.
Abaixo está o código usado 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 funcionalidade está em estado experimental, então você pode testá-la, fornecer feedback e ver o que estamos planejando. Lembre-se de que não garantimos a retrocompatibilidade de ativos criado em um estágio experimental, as APIs para essas funcionalidades podem sofrer alterações e podemos remover completamente funcionalidades experimentais ou uma funcionalidade específica a nosso critério. Confira a lista de problemas conhecidos antes de começar a trabalhar com a funcionalidade.
O basic_interactable_component dá mais controle sobre os parâmetros de interação.
O componente básico interativo permite que as interações tenham uma duração que deve transcorrer antes que a interação tenha sucesso, e lida com a complexidade em torno disso, permitindo várias interações simultaneamente.
Também permite gerenciar o tempo de recarga entre cada interação, que pode variar de acordo com o agente.
As interações são regidas pela 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