Tutoriais intermediários

Prompts de Proximidade

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Você pode criar prompts de proximidade interativos que aparecem quando os usuários se aproximam de objetos no espaço 3D e, em seguida, acionam ações com a entrada do usuário.

Este tutorial usa o projeto Dungeon Delve como uma vitrine. Para acompanhar, abra-o no Studio antes de prosseguir.

Opção Editar no Studio na página principal da experiência

Criar um prompt

Os prompts exibidos na tela são gerados por um objeto ProximityPrompt que é pai de um Attachment, BasePart ou Model.

  1. Selecione o modelo PrisonDoor na visualização 3D ou no Explorer (WorkspacePromptObjectsPrisonDoor).

  2. Expanda sua árvore e selecione o objeto Door.

  3. Colocar um prompt em um Attachment dá mais controle sobre onde o ponto de interação ocorre, em comparação com colocá-lo diretamente na parte/modelo. Insira uma nova Attachment e renomeie-a para PromptAttachment.

  4. Localize a propriedade Position do novo attachment e defina-a como -2.25, -0.5, -0.5. Isso moverá a posição em frente ao buraco da chave da porta.

  5. Passe o mouse sobre PromptAttachment e insira um novo objeto ProximityPrompt.

Aparência do Prompt

Os prompts consistem em três elementos principais, cada um dos quais pode ser controlado pelas seguintes propriedades:

  • ObjectText — Um nome opcional para o objeto com o qual está interagindo.
  • ActionText — Um nome de ação opcional exibido para o usuário.
  • KeyboardKeyCode — A tecla do teclado que acionará o prompt.
  • GamepadKeyCode — O botão do gamepad que acionará o prompt.

Para personalizar a aparência do prompt da porta da prisão, faça as seguintes alterações:

  1. Na janela Properties, localize a propriedade ObjectText e digite Door.

  2. 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 intervalo definido de MaxActivationDistance do objeto pai do prompt.

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

Duração de Apressar

O valor da propriedade HoldDuration determina quão rapidamente a ação do prompt é acionada, em segundos. Como esta porta deve ser destrancada, altere a propriedade HoldDuration 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 precisar anexar um script a cada objeto de prompt.

Uma estrutura básica é a seguinte:


local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detectar quando o prompt é acionado
local function onPromptTriggered(promptObject, player)
end
-- Detectar quando o aperto do prompt começa
local function onPromptHoldBegan(promptObject, player)
end
-- Detectar quando o aperto do prompt termina
local function onPromptHoldEnded(promptObject, player)
end
-- Conectar eventos de prompt a funções de manipulação
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
EventoDescrição
PromptTriggeredDispara quando um usuário interage com um prompt (depois da duração de um prompt com HoldDuration diferente de zero).
PromptButtonHoldBeganDispara quando um usuário começa a interagir com um prompt de HoldDuration diferente de zero.
PromptButtonHoldEndedDispara quando um usuário para de interagir com um prompt de HoldDuration diferente de zero.

No projeto Dungeon Delve, esses eventos são gerenciados pelo script PromptEvents dentro do ServerScriptService.

Dentro do script, os eventos acima simplesmente chamam funções dentro do ModuleScript ObjectActions, também localizado no ServerScriptService.


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 aperto do prompt começa
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Detectar quando o aperto do prompt termina
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Conectar eventos de prompt a funções de manipulação
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. Confira as páginas de referência de ProximityPrompt e ProximityPromptService para ainda mais maneiras de controlar o comportamento dos prompts e explore outros objetos interativos em Dungeon Delve para inspiração criativa.

©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.