ProximityPrompt objetos fomentan la interacción del usuario para activar una acción cuando se acercan a objetos del juego como puertas, interruptores de luz y botones. Usando este objeto, puedes:
- Indicar qué objetos puede interactuar un usuario en el juego.
- Mostrar la acción que un usuario puede realizar 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 prompts de proximidad
Debes parentar los prompts de proximidad a la parte, modelo o adjunto con el que deseas que un usuario interactúe. Para agregar un prompt de proximidad a un objeto BasePart, Model o Attachment:
En la ventana de Explorer, pasa el cursor sobre el BasePart, Model o Attachment y haz clic en el botón ⊕. Se muestra un menú contextual.
Desde el menú, inserta un ProximityPrompt.

Personalizar prompts de proximidad
Puedes personalizar un prompt de proximidad según cómo deseas que aparezca, cuándo deseas que sea visible y qué deseas que haga un usuario para activar la acción.
Apariencia
Los prompts de proximidad necesitan comunicar tres cosas:
- El objeto con el que un usuario puede interactuar.
- La acción que se activa cuando interactúan con el prompt de proximidad.
- La tecla que un usuario debe presionar o mantener.
Puedes especificar estos 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 el prompt 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 del prompt de proximidad. Una vez que el personaje de un usuario entra en ese rango, el prompt de proximidad se vuelve visible.

RequiresLineOfSight
La propiedad RequiresLineOfSight activa la visibilidad del prompt 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 prompts de proximidad, la visibilidad de cada prompt de proximidad depende de cuál prompt de proximidad está apuntando la cámara, así como del valor de la propiedad Exclusivity de cada prompt de proximidad.

Interactividad
Puedes personalizar cómo un usuario interactúa con un prompt 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 del prompt de proximidad. Si esta propiedad tiene un valor de 0, la acción del prompt de proximidad se activa inmediatamente.
ClickablePrompt
La propiedad ClickablePrompt especifica si un usuario puede hacer clic en un prompt de proximidad para activar su acción. Cuando se establece en true, un usuario puede interactuar con el prompt de proximidad haciendo clic directamente en el prompt de proximidad o presionando la tecla especificada. Cuando se establece en false, un usuario solo puede interactuar con el prompt de proximidad presionando la tecla especificada.
Script de prompts de proximidad
Puedes conectarte a los eventos de prompts 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 los prompts de proximidad desde un solo lugar, evitando la necesidad de código duplicado en tu juego.
| Evento | Descripción |
|---|---|
| PromptTriggered | Se activa cuando un jugador interactúa con un prompt de proximidad (después de la duración de un prompt con HoldDuration distinto de cero). |
| PromptTriggerEnded | Se activa cuando el jugador deja de interactuar con un prompt de proximidad. |
| PromptButtonHoldBegan | Se activa cuando un jugador comienza a interactuar con un prompt de proximidad con un valor de HoldDuration distinto de cero. |
| PromptButtonHoldEnded | Se activa cuando un jugador deja de interactuar con un prompt de proximidad con un valor de HoldDuration distinto de cero. |
| PromptShown | Se activa en LocalScripts cuando un prompt de proximidad se hace visible. |
| PromptHidden | Se activa en LocalScripts cuando un prompt se oculta. |
El siguiente ejemplo de código incluye un marco básico para usar ProximityPromptService:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detectar cuando se activa el prompt
local function onPromptTriggered(promptObject, player)
end
-- Detectar cuando comienza la retención del prompt
local function onPromptHoldBegan(promptObject, player)
end
-- Detectar cuando termina la retención del prompt
local function onPromptHoldEnded(promptObject, player)
end
-- Conectar eventos del prompt a funciones de manejo
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)