ProximityPrompt objetos incentivam a interação do usuário para acionar uma ação quando se aproximam de objetos do jogo, como portas, interruptores de luz e botões. Usando este objeto, você pode:
- Indicar quais objetos um usuário pode interagir no jogo.
- Exibir a ação que um usuário pode realizar no objeto e, em seguida, acionar a ação por meio de entrada do usuário, como pressionar ou segurar uma tecla.
- Exibir a entrada correta para todos os tipos de entrada, como teclado, controle e teclas de tela sensível ao toque.
Criar prompts de proximidade
Você deve parentear os prompts de proximidade à parte, modelo ou anexo com o qual deseja que um usuário interaja. Para adicionar um prompt de proximidade a um objeto BasePart, Model ou Attachment:
Na janela Explorer, passe o mouse sobre o BasePart, Model ou Attachment e clique no botão ⊕. Um menu contextual será exibido.
No menu, insira um ProximityPrompt.

Personalizar prompts de proximidade
Você pode personalizar um prompt de proximidade com base em como deseja que ele apareça, quando deseja que ele seja visível e o que deseja que um usuário faça para acionar a ação.
Aparência
Os prompts de proximidade precisam comunicar três coisas:
- O objeto com o qual um usuário pode interagir.
- A ação que é acionada quando eles interagem com o prompt de proximidade.
- A tecla que um usuário deve pressionar ou segurar.
Você pode especificar isso através das seguintes propriedades:
ObjectText Um nome opcional para o objeto com o qual um usuário pode interagir.
ActionText Um nome opcional para a ação que um usuário irá acionar.
KeyboardKeyCode A tecla do teclado que um usuário deve pressionar ou segurar para acionar a ação.
GamepadKeyCode A tecla do controle que um usuário deve pressionar ou segurar para acionar a ação.

Visibilidade
Você pode controlar quando o prompt de proximidade é visível através de suas propriedades MaxActivationDistance, RequiresLineOfSight e Exclusivity.
MaxActivationDistance
A propriedade MaxActivationDistance permite que você defina a distância ao redor do objeto ProximityPrompt que ativa a visibilidade do prompt de proximidade. Uma vez que o personagem de um usuário entra nessa distância, o prompt de proximidade se torna visível.

RequiresLineOfSight
A propriedade RequiresLineOfSight ativa a visibilidade do prompt de proximidade quando há um caminho claro da câmera para o objeto ProximityPrompt. Por padrão, essa propriedade é definida como verdadeira.
Exclusividade
Se o personagem de um usuário estiver dentro do alcance de vários prompts de proximidade, a visibilidade de cada prompt de proximidade depende de qual prompt de proximidade a câmera está apontando, bem como do valor da propriedade Exclusivity de cada prompt de proximidade.

Interatividade
Você pode personalizar como um usuário interage com um prompt de proximidade através de suas propriedades HoldDuration e ClickablePrompt.
HoldDuration
A propriedade HoldDuration determina quantos segundos um usuário tem para pressionar uma tecla antes que a ação do prompt de proximidade seja acionada. Se essa propriedade tiver um valor de 0, a ação do prompt de proximidade será acionada imediatamente.
ClickablePrompt
A propriedade ClickablePrompt especifica se um usuário pode clicar em um prompt de proximidade para acionar sua ação. Quando definida como true, um usuário pode interagir com o prompt de proximidade clicando diretamente no prompt de proximidade ou pressionando a tecla especificada. Quando definida como false, um usuário só pode interagir com o prompt de proximidade pressionando a tecla especificada.
Script de prompts de proximidade
Você pode se conectar aos eventos do prompt de proximidade tanto no próprio objeto ProximityPrompt quanto globalmente através do ProximityPromptService. O ProximityPromptService permite que você gerencie todo o comportamento do prompt de proximidade de um único local, evitando a necessidade de código duplicado em seu jogo.
| Evento | Descrição |
|---|---|
| PromptTriggered | Dispara quando um jogador interage com um prompt de proximidade (após a duração de um prompt com HoldDuration diferente de zero). |
| PromptTriggerEnded | Dispara quando o jogador para de interagir com um prompt de proximidade. |
| PromptButtonHoldBegan | Dispara quando um jogador começa a interagir com um prompt de proximidade com um valor de HoldDuration diferente de zero. |
| PromptButtonHoldEnded | Dispara quando um jogador para de interagir com um prompt de proximidade com um valor de HoldDuration diferente de zero. |
| PromptShown | Dispara em LocalScripts quando um prompt de proximidade é tornado visível. |
| PromptHidden | Dispara em LocalScripts quando um prompt é ocultado. |
O seguinte exemplo de código inclui uma estrutura básica para usar o ProximityPromptService:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detectar quando o prompt é acionado
local function onPromptTriggered(promptObject, player)
end
-- Detectar quando o hold do prompt começa
local function onPromptHoldBegan(promptObject, player)
end
-- Detectar quando o hold do prompt termina
local function onPromptHoldEnded(promptObject, player)
end
-- Conectar eventos do prompt às funções de manipulação
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)