Aggiungere promemoria di proximity

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Puoi creare prompt di prossimità interattiva che appaiono quando gli utenti si avvicinano agli oggetti nello Spazio3D, quindi attiva azioni sull'input dell'utente.

Questo tutorial usa il progetto Dungeon Delve come mostra. Per seguire, apri in Studio prima di procedere.

Edit in Studio option from the experience's main page

Crea una richiesta

I prompt sullo schermo sono generati da un oggetto ProximityPrompt che è padre di un Attachment , BasePart o 2>Class.Model2> .

  1. Seleziona il PrisonDoor modello nella vista 3D o dall'esploratore ( WorkspacePromptObjects → 1> PrisonDoor1> ).

  2. Espandi il suo albero e seleziona l'oggetto Porta .

  3. Posizionare un prompt su un Attachment dà più controllo su dove si verifica il punto di interazione, invece di posizionarlo direttamente sulla parte/modello. Inserisci un nuovo Attachment e rinominalo in PromptRotation .

  4. Individua la nuova proprietà Posizione dell'allegato e impostala su -2.25 , -0.5 , - 1> 0.51> . Questo lo sposterà davanti alla chiave della porta.

  5. Passa il mouse su PromptRotation e inserisci un nuovo oggetto ProximityPrompt .

Aspetto invitante

I prompt consistono in tre elementi principali, ognuno dei quali può essere controllato dalle seguenti proprietà:

  • ObjectText — Un nome opzionale per l'oggetto con cui si interagisce.
  • ActionText — Un nome di azione opzionale mostrato all'utente.
  • KeyboardKeyCode — La chiave della tastiera che attiverà la richiesta.
  • GamepadKeyCode — Il pulsante gamepad che attiverà la richiesta.

Per personalizzare l'aspetto della richiesta della porta della prigione, apporta i seguenti cambiamenti:

  1. Nella finestra Proprietà, individua la proprietà ObjectText e digita in Door .

  2. Per la Proprietà ActionText , digita in Scegli Blocco .

Distance di attivazione

I prompt appaiono quando il personaggio dell'utente si muove all'interno della gamma massima attivazione distanza dell'oggetto di input.

Il valore predefinito funziona bene nella maggior parte dei casi, ma puoi spingere l'interazione dell'utente più vicino alla serratura modificando MaxActivationDistance a 4 .

Mantieni Durata

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

Attuare un'azione

Il modo migliore per rilevare gli eventi richiesti è attraverso ProximityPromptService — questo ti consente di rilevare gli eventi in modo centrale senza attaccare uno script a ciascun oggetto richiesto.

Un framework di base è come segue:


local ProximityPromptService = game:GetService("ProximityPromptService")
-- Rileva quando viene attivata la richiesta
local function onPromptTriggered(promptObject, player)
end
-- Rileva quando inizia a essere spento
local function onPromptHoldBegan(promptObject, player)
end
-- Rileva quando viene terminata la tenuta della richiesta
local function onPromptHoldEnded(promptObject, player)
end
-- Connetti gli eventi richiesti alle funzioni di elaborazione
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
EventoDescrizione
PromptTriggeredSi attiva quando un utente interagisce con un prompt ( dopo la durata per un prompt con non-零 HoldDuration ).
PromptButtonHoldBeganSi attiva quando un utente inizia ad interagire con un prompt di non zero HoldDuration .
PromptButtonHoldEndedSi attiva quando un utente smette di interagire con un prompt di non zero HoldDuration

Nel progetto Dungeon Delve, questi eventi sono gestiti dallo script PromptEvents all'interno di ServerScriptService .

All'interno dello script, gli eventi sopra chiamano semplicemente le funzioni all'interno del ObjectActionsModuleScript, anche situato in ServerScriptService .


local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Rileva quando viene attivata la richiesta
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Rileva quando inizia a essere spento
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Rileva quando viene terminata la tenuta della richiesta
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Connetti gli eventi richiesti alle funzioni di elaborazione
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)

I prompt di prossimità sono una soluzione conveniente e personalizzabile per l'interazione degli oggetti in gioco. Dai un'occhiata alle pagine di riferimento ProximityPrompt e ProximityPromptService per ulteriori modi per controllare il comportamento dell'input e esplorare altri oggetti interattivi in Dungeon Delve per ispirare creatività.