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 activan acciones en respuesta a la entrada del usuario.

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

Opción Editar en Studio desde la página principal del juego

Crear un aviso

Los avisos 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 aviso 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 aviso

Los avisos constan de tres elementos principales, cada uno de los cuales se puede controlar mediante 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 activará el aviso.
  • GamepadKeyCode — El botón del gamepad que activará el aviso.

Para personalizar la apariencia del aviso de la puerta de la 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 avisos aparecen cuando el personaje del usuario se mueve dentro del rango definido de MaxActivationDistance del objeto padre del aviso.

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 sujeción

El valor de la propiedad HoldDuration determina qué tan rápido se activa la acción del aviso, 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 aviso es a través de ProximityPromptService — esto te permite detectar eventos de manera central sin tener que adjuntar un script a cada objeto de aviso.

Un marco básico es el siguiente:

local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detectar cuando se activa el aviso
local function onPromptTriggered(promptObject, player)
end
-- Detectar cuando comienza la sujeción del aviso
local function onPromptHoldBegan(promptObject, player)
end
-- Detectar cuando termina la sujeción del aviso
local function onPromptHoldEnded(promptObject, player)
end
-- Conectar eventos de aviso 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 aviso (después de la duración de un aviso con HoldDuration distinto de cero).
PromptButtonHoldBeganSe activa cuando un usuario comienza a interactuar con un aviso de HoldDuration distinto de cero.
PromptButtonHoldEndedSe activa cuando un usuario deja de interactuar con un aviso de HoldDuration distinto 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)
-- Detectar cuando se activa el aviso
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Detectar cuando comienza la sujeción del aviso
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Detectar cuando termina la sujeción del aviso
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Conectar eventos de aviso 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 con objetos en el juego. Consulta las páginas de referencia de ProximityPrompt y ProximityPromptService para obtener aún más formas de controlar el comportamiento de los avisos, 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.