Puoi creare promemoria di prossimità interattivi che appaiono quando gli utenti si avvicinano a oggetti nello spazio 3D, quindi attivano azioni in base all'input dell'utente.
Questo tutorial utilizza il progetto Dungeon Delve come vetrina. Per seguire il tutorial, aprilo in Studio prima di procedere.

Crea un promemoria
I promemoria sullo schermo sono generati da un oggetto ProximityPrompt collegato a un Attachment, BasePart o Model.
Seleziona il modello PrisonDoor nella vista 3D o dall'Esplora (Workspace → PromptObjects → PrisonDoor).


Espandi il suo albero e seleziona l'oggetto Door.

Posizionare un promemoria su un Attachment ti dà maggiore controllo su dove si verifica il punto di interazione, rispetto a posizionarlo direttamente sulla parte/modello. Inserisci un nuovo Attachment e rinominalo in PromptAttachment.

Trova la proprietà Position del nuovo attachment e impostala su -2.25, -0.5, -0.5. Questo lo sposterà davanti al buco della chiave della porta.


Passa il mouse su PromptAttachment e inserisci un nuovo oggetto ProximityPrompt.

Aspetto del promemoria
I promemoria consistono in tre elementi principali, ciascuno dei quali può essere controllato dalle seguenti proprietà:

- ObjectText — Un nome facoltativo per l'oggetto con cui si interagisce.
- ActionText — Un nome facoltativo dell'azione mostrato all'utente.
- KeyboardKeyCode — Il tasto della tastiera che attiverà il promemoria.
- GamepadKeyCode — Il pulsante del gamepad che attiverà il promemoria.
Per personalizzare l'aspetto del promemoria della porta del carcere, apporta le seguenti modifiche:
Nella finestra Proprietà, trova la proprietà ObjectText e digita Door.

Per la proprietà ActionText, digita Pick Lock.

Distanza di attivazione
I promemoria appaiono quando il personaggio dell'utente si muove all'interno dell'intervallo definito da MaxActivationDistance dell'oggetto padre del promemoria.

Il valore predefinito funziona bene nella maggior parte dei casi, ma puoi avvicinare l'interazione dell'utente alla serratura cambiando MaxActivationDistance a 4.

Durata di mantenimento
Il valore della proprietà HoldDuration determina quanto rapidamente viene attivata l'azione del promemoria, in secondi. Poiché questa porta deve essere forzata per sbloccarsi, cambia la proprietà HoldDuration a 4.

Implementa un'azione
Il modo migliore per rilevare eventi di promemoria è attraverso ProximityPromptService — questo ti consente di rilevare eventi in modo centrale senza dover allegare uno script a ciascun oggetto promemoria.
Un framework di base è il seguente:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Rileva quando il promemoria viene attivato
local function onPromptTriggered(promptObject, player)
end
-- Rileva quando inizia il mantenimento del promemoria
local function onPromptHoldBegan(promptObject, player)
end
-- Rileva quando termina il mantenimento del promemoria
local function onPromptHoldEnded(promptObject, player)
end
-- Collega gli eventi del promemoria alle funzioni di gestione
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)| Evento | Descrizione |
|---|---|
| PromptTriggered | Si attiva quando un utente interagisce con un promemoria (dopo la durata di un promemoria con HoldDuration diverso da zero). |
| PromptButtonHoldBegan | Si attiva quando un utente inizia a interagire con un promemoria con HoldDuration diverso da zero. |
| PromptButtonHoldEnded | Si attiva quando un utente smette di interagire con un promemoria con HoldDuration diverso da zero. |
Nel progetto Dungeon Delve, questi eventi sono gestiti dallo script PromptEvents all'interno di ServerScriptService.

All'interno dello script, gli eventi sopra semplicemente chiamano funzioni all'interno del ModuleScript ObjectActions, anch'esso situato in ServerScriptService.
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Rileva quando il promemoria viene attivato
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Rileva quando inizia il mantenimento del promemoria
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Rileva quando termina il mantenimento del promemoria
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Collega gli eventi del promemoria alle funzioni di gestione
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)I promemoria di prossimità sono una soluzione conveniente e personalizzabile per l'interazione con oggetti di gioco. Dai un'occhiata alle pagine di riferimento ProximityPrompt e ProximityPromptService per ulteriori modi di controllare il comportamento dei promemoria e esplora altri oggetti interattivi in Dungeon Delve per ispirazione creativa.