Indicaciones 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, luego activan acciones en la entrada del usuario.

Este tutorial usa el proyecto Dungeon Delve como muestra. Para seguir, ábrelo en Studio antes de proceder.

Edit in Studio option from the experience's main page

Crear una solicitud

Los mensajes de pantalla se generan por un objeto ProximityPrompt que está asociado a un Attachment, BasePart o Model.

  1. Seleccione el modelo Puerta de prisión en la vista 3D o desde el Explorador ( Espacio de trabajoObjetos de interacciónPuerta de prisión ).

  2. Expanda su árbol y seleccione el objeto Puerta .

  3. Colocar una solicitud 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 archivo adjunto y renombralo a Archivo de promoción .

  4. Localiza la propiedad Posición del nuevo archivo conexióny ponla en -2.25 , -0.5 , - 0.5 .Esto lo moverá delante del orificio de la llave de la puerta.

  5. Pase el mouse sobre Archivo de promoción y pegue un nuevo objeto ProximityPrompt .

aspecto, lookde la ventana

Las solicitudes consisten en tres elementos principales, cada uno de los cuales se puede controlar con las siguientes propiedades:

  • Texto del objeto — Un nombre opcional para el objeto con el que se interactúa.
  • Nombre de acción opcional — Un nombre de acción opcional que se muestra al usuario.
  • Código de tecla del teclado — La tecla del teclado que desencadenará la solicitud.
  • Código de tecla del gamepad — El botón del gamepad que desencadenará la ventana.

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

  1. En la ventana de propiedades, localiza la propiedad Texto del objeto y escribe Puerta .

  2. Para la propiedad Texto de acción , escriba Bloqueo de elección .

Distancia de activación

Aparecen solicitudes cuando el personaje del usuario se mueve dentro del rango definido de MaxActivationDistance del objeto de la solicitud.

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

Mantener duración

El valor de la propiedad HoldDuration determina la rapidez con que se activa la acción del mensaje, en segundos.Dado que esta puerta debe ser seleccionada para desbloquearla, cambie la propiedad Duración de aguante a 4 .

Implementar una acción

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

Un marco básico es el siguiente:


local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detectar cuando se activa la solicitud
local function onPromptTriggered(promptObject, player)
end
-- Detectar cuando comienza el mantenimiento de la solicitud
local function onPromptHoldBegan(promptObject, player)
end
-- Detectar cuando finaliza la retención de solicitudes
local function onPromptHoldEnded(promptObject, player)
end
-- Conectar eventos de solicitud a funciones de manejo
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
SucesoDescripción
PromptTriggeredSe enciende cuando un usuario interactúa con una ventana (después de la duración de una ventana con un valor no nulo HoldDuration ).
PromptButtonHoldBeganSe activa cuando un usuario comienza a interactuar con una solicitud de no cero HoldDuration .
PromptButtonHoldEndedSe activa cuando un usuario deja de interactuar con una solicitud de no cero HoldDuration

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

Dentro del script, los eventos anteriores simplemente llaman funciones dentro del ObjectActions ModuleScript, también ubicado en ServerScriptService .


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

Los mensajes de proximidad son una solución conveniente y personalizable para la interacción de objetos en el juego.Consulte las páginas de referencia ProximityPrompt y ProximityPromptService para obtener aún más formas de controlar el comportamiento de la interfaz de usuario, y explore otros objetos interactivos en Dungeon Delve para inspiración creativa.