Puedes crear prom示tivas de proximidad interactivas que aparecen cuando los usuarios se acercan a los objetos en el espacio 3D, y luego activar acciones en la entrada del usuario.
Este tutorial usa el proyecto Sótano de la Mazmorra como un escaparate. Para seguir, abríelo en Studio antes de proceder.
Crear una Pista
Las solicitudes de on-screen se generan por un objeto ProximityPrompt que tiene padre objeto de un Attachment, o BasePart, o 2> Class.Model2> .
Seleccione el modelo PrisonDoor en la vista 3D o desde el Explorador ( Workspace → PromptObjects → 1> PrisonDoor1> ).
Expand its tree and select the Puerta objeto.
Colocar una solicitud en un Attachment te da más control sobre dónde ocurre el punto de interacción, en lugar de colocarla directamente en la parte/modelo. Inserta un nuevo Adjunto y renombralo a PromptArrow .
Ubique la propiedad de posición de la nueva conexióny establezca que se coloca en -2.25 , -0.5 , - 0.5 . Esto lo moverá frente a la llave de la puerta.
Pase el cursor sobre PromptRotation y coloque un nuevo objeto ProximityPrompt .
Apariencia de invitación
Las solicitudes consisten en tres elementos principales, cada uno de los cuales se puede controlar con las siguientes propiedades:
- Texto de objeto — Un nombre opcional para el objeto con el que se interactúa.
- Acción de texto acción — Un nombre de acción opcional que se muestra al usuario.
- KeyboardKeyCode — La tecla del teclado que desencadenará el mensaje.
- GamepadKeyCode — El botón de gamepad que desencadenará la solicitud.
Para personalizar la apariencia de la solicitud de la puerta de la prisión, realice los siguientes cambios:
En la ventana Propiedades, localice la propiedad Objeto de texto y escriba Puerta .
Para la propiedad Acción de texto , escribe Bloquear elección .
Distancia de Activación
Las solicitudes aparecen cuando el padrede carácter del usuario se mueve dentro del rango definido MaxActivationDistance del objeto de solicitud.
El valor predeterminado funciona bien en la mayoría de los casos, pero puede acercar la interacción del usuario al bloque cambiando Distancia de Activación Máxima a 4 .
Mantener Duración
El valor de la propiedad Duración de la acción determina la rapidez con la que se activa la acción del prom示. En segundos. Debido a que esta puerta debe ser elegida para desbloquearla, cambie el valor de la propiedad Duración de la acción a 4 .
Im实装ar una acción
La mejor manera de detectar eventos de invitación es a través de ProximityPromptService — esto te permite detectar eventos centralmente sin asignar un script a cada objeto de invitación.
Un marco básico es como sigue:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detecta cuando se activa el mensaje
local function onPromptTriggered(promptObject, player)
end
-- Detecta cuando el modo de espera del modo de espera comienza
local function onPromptHoldBegan(promptObject, player)
end
-- Detecta cuando termina el ajuste de la solicitud
local function onPromptHoldEnded(promptObject, player)
end
-- Conectar eventos de prom示 para funciones de manejo
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Evento | Descripción |
---|---|
PromptTriggered | Se activa cuando un usuario interactúa con un mensaje de diálogo ( después de la duración de un mensaje de diálogo con no-零 HoldDuration ). |
PromptButtonHoldBegan | Se activa cuando un usuario comienza a interactuar con un mensaje de no cero HoldDuration . |
PromptButtonHoldEnded | Se activa cuando un usuario deja de interactuar con un mensaje de no cero HoldDuration |
En el proyecto Dungeon Delve, estos eventos son gestionados por el script PromptEvents dentro de ServerScriptService .
Dentro del script, los eventos de arriba 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)
-- Detecta cuando se activa el mensaje
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Detecta cuando el modo de espera del modo de espera comienza
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Detecta cuando termina el ajuste de la solicitud
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Conectar eventos de prom示 para funciones de manejo
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Las solicitudes de proximidad son una solución conveniente y personalizable para la interacción de objetos en el juego. Echa un vistazo a las páginas de referencia ProximityPrompt y ProximityPromptService para obtener aún más formas de controlar el comportamiento de las solicitudes y explorar otros objetos interactivos en Dungeon Delve para obtener inspiración creativa.