Você pode criar prompts de proximidade interativos que aparecem quando os usuários se aproximam de objetos no espaço 3D e, em seguida, acionar ações na entrada do usuário.
Este tutorial usa o projeto Dungeon Delve como uma mostra. Para seguir, abra-o no Studio antes de proceder.

Criar um prompt
Os prompts na tela são gerados por um objeto ProximityPrompt parentado a um Attachment, BasePart ou Model.
Selecione o modelo Porta da Prisão na visualização 3D ou a partir do Explorer ( Área de Trabalho → Objetos de Prompt → Porta da Prisão ).
Expanda sua árvore e selecione o Objeto Porta .
Colocar um prompt em um Attachment dá-lhe mais controle sobre onde o ponto de interação ocorre, versus colocá-lo diretamente na peça/modelo.Insira um novo Anexo e renomeie-o para Anexo Rápido .
Localize a propriedade Posição do novo anexo e defina-a para -2.25 , -0.5 , - 0.5 .Isso vai movê-la na frente do buraco da chave da porta.
Passe o mouse sobre Anexo de Solicitação e insira um novo Objeto Aviso de Proximidade .
aparênciado Prompt
Os prompts consistem em três elementos principais, cada um dos quais pode ser controlado pelas seguintes propriedades:

- Texto do Objeto — Um nome opcional para o objeto com o qual está sendo interagido.
- Nome de ação opcional — Um nome de ação opcional mostrado ao usuário.
- Código da Tecla do Teclado — A tecla do teclado que disparará o prompt.
- Código de tecla do gamepad — O botão do gamepad que disparará o prompt.
Para personalizar a aparência do prompt da porta da prisão, faça as seguintes alterações:
Na janela Propriedades, localize a propriedade Texto do Objeto e digite Porta .
Para a propriedade ActionText , digite Pick Lock .
Distância de ativação
Os prompts aparecem quando o personagem do usuário se move dentro do alcance máximo de ativação definido do Objetode prompt.

O valor padrão funciona bem na maioria dos casos, mas você pode empurrar a interação do usuário mais perto do bloqueio alterando MaxActivationDistance para 4 .

Manter duração
O valor da propriedade Duração de Ação determina com que rapidez a ação do prompt é acionada, em segundos.Como esta porta deve ser selecionada para desbloqueá-la, altere a propriedade Duração de Segurança para 4 .

Implementar uma ação
A melhor maneira de detectar eventos de prompt é através de ProximityPromptService - isso permite que você detecte eventos centralmente sem anexar um script a cada Objetode prompt.
Um framework básico é o seguinte:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detectar quando o prompt é acionado
local function onPromptTriggered(promptObject, player)
end
-- Detectar quando o seguramento do prompt começa
local function onPromptHoldBegan(promptObject, player)
end
-- Detectar quando os limites de espera são mantidos
local function onPromptHoldEnded(promptObject, player)
end
-- Conectar eventos de solicitação às funções de processamento
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Evento | Descrição |
---|---|
PromptTriggered | Incêndios quando um usuário interage com um prompt ( após a duração para um prompt com não zero HoldDuration ). |
PromptButtonHoldBegan | Dispara quando um usuário começa a interagir com um prompt de não zero HoldDuration. |
PromptButtonHoldEnded | Incêndios quando um usuário para de interagir com um prompt de não zero HoldDuration |
No projeto Dungeon Delve, esses eventos são gerenciados pelo script PromptEvents dentro do Serviço de Script de Servidor .

Dentro do script, os eventos acima simplesmente chamam funções dentro do ObjectActions ModuleScript, também localizado em Serviço de Script de Servidor .
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Detectar quando o prompt é acionado
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Detectar quando o seguramento do prompt começa
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Detectar quando os limites de espera são mantidos
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Conectar eventos de solicitação às funções de processamento
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Os prompts de proximidade são uma solução conveniente e personalizável para a interação de objetos no jogo.Verifique as páginas de referência ProximityPrompt e ProximityPromptService para ainda mais maneiras de controlar o comportamento do prompt e explore outros objetos interativos em Dungeon Delve para inspiração criativa.