ProximityPrompt objetos fomentan la interacción del usuario para activar una acción cuando se acercan a objetos en la experiencia, como puertas, interruptores de luz y botones. Usando este objeto, puedes:
- Indicar qué objetos puede interactuar un usuario en la experiencia.
- Mostrar la acción que puede realizar un usuario en el objeto y luego activar la acción a través de la entrada del usuario, como presionar o mantener una tecla.
- Mostrar la entrada correcta para todos los tipos de entrada, como teclado, gamepad y teclas de pantalla táctil.
Crear indicaciones de proximidad
Debes parentar las indicaciones de proximidad a la parte, modelo o accesorio con el que deseas que un usuario interactúe. Para agregar una indicación de proximidad a un objeto BasePart, Model o Attachment:
En la ventana Explorer, coloca el cursor sobre el BasePart, Model o Attachment y haz clic en el botón ⊕. Se mostrará un menú contextual.
Desde el menú, inserta un ProximityPrompt.

Personalizar indicaciones de proximidad
Puedes personalizar una indicación de proximidad según cómo quieres que aparezca, cuándo quieres que sea visible y qué quieres que un usuario haga para activar la acción.
Apariencia
Las indicaciones de proximidad necesitan comunicar tres cosas:
- El objeto con el que puede interactuar un usuario.
- La acción que se activa cuando interactúan con la indicación de proximidad.
- La tecla que un usuario debe presionar o mantener.
Puedes especificar esto a través de las siguientes propiedades:
ObjectText Un nombre opcional para el objeto con el que un usuario puede interactuar.
ActionText Un nombre opcional para la acción que un usuario activará.
KeyboardKeyCode La tecla del teclado que un usuario debe presionar o mantener para activar la acción.
GamepadKeyCode La tecla del gamepad que un usuario debe presionar o mantener para activar la acción.

Visibilidad
Puedes controlar cuándo es visible la indicación de proximidad a través de sus propiedades MaxActivationDistance, RequiresLineOfSight, y Exclusivity.
MaxActivationDistance
La propiedad MaxActivationDistance te permite definir el rango alrededor del objeto ProximityPrompt que activa la visibilidad de la indicación de proximidad. Una vez que el personaje de un usuario entra en ese rango, la indicación de proximidad se vuelve visible.

RequiresLineOfSight
La propiedad RequiresLineOfSight activa la visibilidad de la indicación de proximidad cuando hay un camino claro desde la cámara hasta el objeto ProximityPrompt. Por defecto, esta propiedad está configurada en verdadero.
Exclusividad
Si el personaje de un usuario está dentro del rango de múltiples indicaciones de proximidad, la visibilidad de cada indicación de proximidad depende de cuál de ellas esté apuntando la cámara, además del valor de la propiedad Exclusivity de cada indicación de proximidad.

Interactividad
Puedes personalizar cómo un usuario interactúa con una indicación de proximidad a través de sus propiedades HoldDuration y ClickablePrompt.
HoldDuration
La propiedad HoldDuration determina cuántos segundos tiene un usuario para presionar una tecla antes de que se active la acción de la indicación de proximidad. Si esta propiedad tiene un valor de 0, la acción de la indicación de proximidad se activa de inmediato.
ClickablePrompt
La propiedad ClickablePrompt especifica si un usuario puede hacer clic en una indicación de proximidad para activar su acción. Cuando se establece en true, un usuario puede interactuar con la indicación de proximidad haciendo clic directamente en la indicación de proximidad o presionando la tecla especificada. Cuando se establece en false, un usuario solo puede interactuar con la indicación de proximidad presionando la tecla especificada.
Scripts de indicaciones de proximidad
Puedes conectarte a los eventos de indicaciones de proximidad ya sea en el objeto ProximityPrompt en sí o globalmente a través de ProximityPromptService. El ProximityPromptService te permite gestionar todo el comportamiento de las indicaciones de proximidad desde un solo lugar, evitando la necesidad de código duplicado en tu experiencia.
| Evento | Descripción |
|---|---|
| PromptTriggered | Se activa cuando un jugador interactúa con una indicación de proximidad (después de la duración de una indicación con un HoldDuration distinto de cero). |
| PromptTriggerEnded | Se activa cuando el jugador deja de interactuar con una indicación de proximidad. |
| PromptButtonHoldBegan | Se activa cuando un jugador comienza a interactuar con una indicación de proximidad con un valor de HoldDuration distinto de cero. |
| PromptButtonHoldEnded | Se activa cuando un jugador deja de interactuar con una indicación de proximidad con un valor de HoldDuration distinto de cero. |
| PromptShown | Se activa en LocalScripts cuando se hace visible una indicación de proximidad. |
| PromptHidden | Se activa en LocalScripts cuando una indicación es oculta. |
El siguiente ejemplo de código incluye un marco básico para utilizar ProximityPromptService:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detectar cuándo se activa la indicación
local function onPromptTriggered(promptObject, player)
end
-- Detectar cuándo comienza la retención de la indicación
local function onPromptHoldBegan(promptObject, player)
end
-- Detectar cuándo termina la retención de la indicación
local function onPromptHoldEnded(promptObject, player)
end
-- Conectar eventos de indicaciones a funciones de manejo
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)