Puoi creare prompt di prossimità interattivi che appaiono quando gli utenti si avvicinano agli oggetti nello Spazio3D, quindi attivare azioni sull'input dell'utente.
Questo tutorial utilizza il progetto Dungeon Delve come vetrina. Per seguire, aprilo in Studio prima di procedere.

Crea un prompt
Gli avvisi sullo schermo vengono generati da un oggetto ProximityPrompt parented a un Attachment , BasePart o Model .
Seleziona il modello PrisonDoor nella vista 3D o dall'esploratore ( Workspace → PromptObjects → PrisonDoor ).
Espandi il suo albero e seleziona l'oggetto Porta .
Posizionare una richiesta su un Attachment dà più controllo su dove si verifica il punto di interazione, rispetto al posizionamento diretto sulla parte/modello.Inserisci un nuovo allegato e rinominalo in PromptAttachment .
Individua la proprietà Posizione del nuovo allegato e impostala su -2.25 , -0.5 , - 0.5 .Questo lo sposterà davanti alla fessura della chiave della porta.
Passa il mouse su PromptAttachment e inserisci un nuovo oggetto ProximityPrompt .
Aspetto della aspetto
Le richieste consistono in tre elementi principali, ognuno dei quali può essere controllato dalle seguenti proprietà:

- Testo dell'oggetto — Un nome opzionale per l'oggetto con cui si interagisce.
- Nome azione opzionale — Un nome di azione opzionale mostrato all'utente.
- Codice chiave della tastiera — La tastiera che attiverà la richiesta.
- GamepadKeyCode — Il pulsante del gamepad che attiverà la richiesta.
Per personalizzare l'aspetto della richiesta della porta della prigione, apporta i seguenti cambiamenti:
Nella finestra Proprietà, individua la proprietà Texto dell'oggetto e digita Porta .
Per la Proprietà ActionText , digita Pick Lock .
Distanza di attivazione
I prompt appaiono quando il personaggio dell'utente si muove all'interno dell'intervallo MaxActivationDistance definito del oggetto prompt.

Il valore predefinito funziona bene nella maggior parte dei casi, ma puoi spostare l'interazione dell'utente più vicino al blocco cambiando MaxActivationDistance in 4 .

Mantieni la durata
Il valore della proprietà HoldDuration determina la velocità con cui viene attivata l'azione della richiesta, in secondi.Poiché questa porta deve essere selezionata per sbloccarla, cambia la proprietà HoldDuration in 4 .

Implementa un'azione
Il modo migliore per rilevare eventi rapidi è attraverso ProximityPromptService — questo ti consente di rilevare gli eventi centralmente senza attaccare uno script a ogni oggetto di prompt.
Un framework di base è il seguente:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Rileva quando viene richiesto l'avviso
local function onPromptTriggered(promptObject, player)
end
-- Rileva quando inizia il mantenimento della prompt
local function onPromptHoldBegan(promptObject, player)
end
-- Rileva quando le estremità del prompt vengono mantenute
local function onPromptHoldEnded(promptObject, player)
end
-- Connetti eventi di prompt di elaborazione alle funzioni di elaborazione
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Evento | Descrizione |
---|---|
PromptTriggered | Si accende quando un utente interagisce con una richiesta ( dopo la durata per una richiesta con non zero HoldDuration ). |
PromptButtonHoldBegan | Si accende quando un utente inizia a interagire con un prompt di non zero HoldDuration . |
PromptButtonHoldEnded | Si accende quando un utente smette di interagire con un prompt di non zero HoldDuration |
Nel progetto Dungeon Delve questi eventi sono gestiti dal script PromptEvents all'interno di ServerScriptService .

All'interno dello script, gli eventi sopra chiamano semplicemente le funzioni all'interno del ObjectActions , anche situati in ServerScriptService .
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Rileva quando viene richiesto l'avviso
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Rileva quando inizia il mantenimento della prompt
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Rileva quando le estremità del prompt vengono mantenute
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Connetti eventi di prompt di elaborazione alle funzioni di elaborazione
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Gli avvisi di prossimità sono una soluzione conveniente e personalizzabile per l'interazione dell'oggetto in gioco.Dai un'occhiata alle pagine di riferimento ProximityPrompt e ProximityPromptService per ulteriori modi per controllare il comportamento delle richieste, e esplora altri oggetti interattivi in Dungeon Delve per ispirazione creativa.