Você pode criar prompts de proximidade interativos que aparecem quando os usuários se aproximam de objetos no espaço 3D e, em seguida, geram ações na entrada do usuário.
Este tutorial usa o projeto Dungeon Delve como uma mostruário. Para seguir, abra-o no Studio antes de prosseguir.
Criar um Prompt
As solicitações on-screen são geradas por um objeto ProximityPrompt que está ligado a um Attachment, BasePart ou 2> Class.Model2>.
Selecione o modelo PrisonDoor na visualização 3D ou no Explorer ( Workspace → PromptObjects → 1> PrisonDoor1> ).
Expanda sua árvore e selecione o Objeto Porta .
Colocar um prompt em um Attachment dá a você mais controle sobre onde o ponto de interação ocorre, em vez de colocá-lo diretamente na peça/modelo. Insira um novo Ataque e renomeie-o para PromptArrow .
Localize a propriedade de Posição do novo anexo e definha-a como -2.25 , -0.5 , 1> -1>0.51>. Isso o moverá para a frente da porta.
Passe o mouse sobre PromptConfiguration e insira um novo Objeto ProximityPrompt .
Aparência Prompt
As solicitações consistem em três elementos principais, cada um dos quais pode ser controlado pelas seguintes propriedades:
- Texto de Objeto — Um nome opcional para o objeto com o qual interagir.
- ActionText — Um nome de ação opcional mostrado ao usuário.
- KeyboardKeyCode — A chave do teclado que ativará o prompt.
- GamepadKeyCode — O botão do gamepad que disparará o prompt.
Para personalizar a aparência da janela de solicitação da prisão, faça as seguintes alterações:
Na janela Propriedades, localize a propriedade Texto de Objeto e digite Porta .
Para a propriedade ActionText , digite em Pick Lock .
Distância de Ativação
Os pop-ups aparecem quando o personagem do usuário mova-se dentro da faixa definida MaxActivationDistance do Objetode pop-up.
O valor padrão funciona bem em muitos casos, mas você pode empurrar a interação do usuário mais perto da fechadura alterando Distância de Ativação Máxima para 4 .
Duração de Segurança
O valor da propriedade Segurar Duração determina a rapidez com que a ação do prompt é acionada, em segundos. Como esta porta deve ser selecionada para desbloqueá-la, altere o valor da propriedade Segurar Duração para 4 .
implementar uma ação
A melhor maneira de detectar eventos de solicitação é através de ProximityPromptService — isso permite que você detecte eventos centralmente sem atribuir um script a cada Objetode solicitação.
Um framework básico é o seguinte:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detectar quando o prompt é acionado
local function onPromptTriggered(promptObject, player)
end
-- Detecte quando o seguramento de solicitação começar
local function onPromptHoldBegan(promptObject, player)
end
-- Detecte quando o seguramento de solicitação terminar
local function onPromptHoldEnded(promptObject, player)
end
-- Conecte eventos de saída às funções de processamento
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 |
No projeto Dungeon Delve, esses eventos são gerenciados pelo script PromptEvents dentro de ServerScriptService .
Dentro do script, os eventos acima simplesmente chamam funções dentro do ObjectActions ModuleScript, também localizado em 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
-- Detecte quando o seguramento de solicitação começar
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Detecte quando o seguramento de solicitação terminar
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Conecte eventos de saída às funções de processamento
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
As solicitações de proximidade são uma solução conveniente e personalizável para interação de objetos no jogo. Confira as páginas de referência ProximityPrompt e ProximityPromptService para mais maneiras de controlar o comportamento da solicitação e explorar outros objetos interativos em Dungeon Delve para criar inspiração criativa.