Saltar al contenido principal

Interactable

Interactable controla si un componente interactivo creado participa en las consultas de los jugadores nativos y en la visualización rápida.

Agrega Interaction Ray a la entidad que apunta al objetivo, e Interactable junto con un Lua Behaviour al objetivo. El rayo funciona con un jugador controlado por Lua o con una cámara separada, tanto en Play Mode como en los builds de PS1. No requiere Player Motor, First Person Controller ni Third Person Controller. Player Input es opcional: sin él, el botón heredado es Cross. Si Player Input existe pero está desactivado, el rayo no puede activar objetivos. Pausar el juego o reproducir un timeline que deshabilita los controles del jugador también bloquea la activación nativa.

Si tu script Lua ya detecta objetivos y llama a GameObject.Invoke, como hace Last Exit, no agregues un Interaction Ray para la misma acción: usa una sola ruta de interacción para evitar que un objeto se active dos veces.

Para controlar los diálogos, consulta Bloquear al personaje y la cámara durante un diálogo, con ejemplos para controladores nativos y scripts de Lua.

MétodoRetornoDescripción
Interactable.SetEnabled(gameObjectId, enabled)booleanoActiva o desactiva el destino.
Interactable.IsEnabled(gameObjectId)booleanoEstado activado de las lecturas; los objetivos faltantes devuelven false.

Un Interactable también almacena el texto de aviso, el nombre exacto de la función Lua, el radio, un botón opcional específico del objeto, el tiempo entre activaciones, si puede activarse más de una vez y un Canvas opcional para el aviso. Si el campo Button está vacío, hereda la acción de interacción de Player Input. La interacción se activa al presionar el botón; mantenerlo presionado no invoca al objeto en cada cuadro.

Configura Button, Cooldown (s), Repeatable y Prompt Canvas en el componente Interactable del objeto. Con Built-in Text Prompt, el engine muestra button: prompt en la parte inferior de la pantalla cuando el objetivo está al alcance. No necesitas crear un elemento UI ni dibujar el texto desde Lua. Un Prompt Canvas con nombre reemplaza ese texto; mantén el canvas y sus elementos habilitados para que el sistema de interacción pueda mostrarlos y ocultarlos.

La misma consulta controla el aviso y la activación en Play Mode y PS1. Distance mide desde la posición global de la entidad con Interaction Ray hasta la del objetivo, y se amplía con el Radius del objetivo. En modo Ray, la rotación Y del origen determina la dirección y el mayor de los radios del rayo y del objetivo da la tolerancia horizontal. El modo Sphere también acepta objetivos a los lados o detrás del origen. Require Line Of Sight rechaza objetivos bloqueados en ambos modos. Los objetivos desactivados y los no repetibles ya consumidos no muestran el aviso.

function Interact(gameObjectId, sourceGameObjectId, context, detail)
if not Interactable.IsEnabled(gameObjectId) then
return
end
Interactable.SetEnabled(gameObjectId, false)
Log.Print("Activated by " .. tostring(sourceGameObjectId))
end

Los dos primeros argumentos de callback son los ID de destino y de origen GameObject. Las dos cadenas son contexto de diagnóstico y pueden diferir entre la vista previa y el tiempo de ejecución empaquetado; no hagas que el juego dependa de su contenido. El nombre de la función en Interactable e Interaction Ray debe coincidir exactamente con la callback personalizada.

Volver a habilitar un objetivo limpia su enfriamiento y estado consumido, permitiendo que un objetivo no repetible se arme deliberadamente.