Tutoriales intermedios

Prompts de proximidad

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Puedes crear prompts de proximidad interactivos que aparecen cuando los usuarios se acercan a objetos en el espacio 3D, y luego desencadenan acciones en la entrada del usuario.

Este tutorial utiliza el proyecto Dungeon Delve como escaparate. Para seguirlo, ábrelo en Studio antes de continuar.

Opción Editar en Studio desde la página principal de la experiencia

Crear un prompt

Los prompts en pantalla son generados por un objeto ProximityPrompt que está parentado a un Attachment, BasePart o Model.

  1. Selecciona el modelo PrisonDoor en la vista 3D o desde el Explorer (WorkspacePromptObjectsPrisonDoor).

  2. Expande su árbol y selecciona el objeto Door.

  3. Colocar un prompt en un Attachment te da más control sobre dónde ocurre el punto de interacción, en comparación con colocarlo directamente en la parte/modelo. Inserta un nuevo Attachment y renómbralo a PromptAttachment.

  4. Localiza la propiedad Position del nuevo attachment y configúralo en -2.25, -0.5, -0.5. Esto lo moverá frente al agujero de la llave de la puerta.

  5. Pasa el cursor sobre PromptAttachment e inserta un nuevo objeto ProximityPrompt.

Apariencia del prompt

Los prompts consisten en tres elementos principales, cada uno de los cuales puede ser controlado por las siguientes propiedades:

  • ObjectText — Un nombre opcional para el objeto con el que se está interactuando.
  • ActionText — Un nombre de acción opcional que se muestra al usuario.
  • KeyboardKeyCode — La tecla del teclado que desencadenará el prompt.
  • GamepadKeyCode — El botón del gamepad que desencadenará el prompt.

Para personalizar la apariencia del prompt de la puerta de prisión, realiza los siguientes cambios:

  1. En la ventana de Properties, localiza la propiedad ObjectText y escribe Door.

  2. Para la propiedad ActionText, escribe Pick Lock.

Distancia de activación

Los prompts aparecen cuando el personaje del usuario se mueve dentro del rango definido de MaxActivationDistance del objeto padre del prompt.

El valor predeterminado funciona bien en la mayoría de los casos, pero puedes acercar la interacción del usuario a la cerradura cambiando MaxActivationDistance a 4.

Duración de la retención

El valor de la propiedad HoldDuration determina qué tan rápido se desencadena la acción del prompt, en segundos. Dado que esta puerta debe ser forzada para desbloquearla, cambia la propiedad HoldDuration a 4.

Implementar una acción

La mejor manera de detectar eventos de prompts es a través de ProximityPromptService — esto te permite detectar eventos de manera central sin tener que adjuntar un script a cada objeto de prompt.

Un marco básico es el siguiente:


local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detecta cuando se activa el prompt
local function onPromptTriggered(promptObject, player)
end
-- Detecta cuando comienza la retención del prompt
local function onPromptHoldBegan(promptObject, player)
end
-- Detecta cuando finaliza 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)
EventoDescripción
PromptTriggeredSe activa cuando un usuario interactúa con un prompt (después de la duración de un prompt con HoldDuration diferente de cero).
PromptButtonHoldBeganSe activa cuando un usuario comienza a interactuar con un prompt con HoldDuration diferente de cero.
PromptButtonHoldEndedSe activa cuando un usuario deja de interactuar con un prompt con HoldDuration diferente de cero.

En el proyecto Dungeon Delve, estos eventos son gestionados por el script PromptEvents dentro de ServerScriptService.

Dentro del script, los eventos anteriores simplemente llaman a funciones dentro del ModuleScript ObjectActions, que también se encuentra en ServerScriptService.


local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Detecta cuando se activa el prompt
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Detecta cuando comienza la retención del prompt
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Detecta cuando finaliza la retención del prompt
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Conectar eventos del prompt a funciones de manejo
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)

Los prompts de proximidad son una solución conveniente y personalizable para la interacción de objetos en el juego. Consulta las páginas de referencia de ProximityPrompt y ProximityPromptService para obtener aún más maneras de controlar el comportamiento de los prompts, y explora otros objetos interactivos en Dungeon Delve para inspiración creativa.

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.