Je kunt interactieve nabijheidsaanwijzingen maken die verschijnen wanneer gebruikers objecten in de 3D-ruimte naderen, en vervolgens acties activeren op gebruikersinvoer.
Deze tutorial gebruikt het Dungeon Delve project als showcase. Om mee te doen, open het in Studio voordat je verdergaat.

Maak een aanwijzing
Aanwijzingen op het scherm worden gegenereerd door een ProximityPrompt object dat is gekoppeld aan een Attachment, BasePart of Model.
Selecteer het PrisonDoor model in de 3D-weergave of vanuit de Explorer (Workspace → PromptObjects → PrisonDoor).


Vouw de boom uit en selecteer het Door object.

Het plaatsen van een aanwijzing op een Attachment geeft je meer controle over waar het interactiepunt zich bevindt, in tegenstelling tot het direct plaatsen op het onderdeel/model. Voeg een nieuwe Attachment toe en hernoem deze naar PromptAttachment.

Zoek de Position eigenschap van de nieuwe attachment en stel deze in op -2.25, -0.5, -0.5. Dit zal het voor de sleutelgat van de deur plaatsen.


Hover over PromptAttachment en voeg een nieuw ProximityPrompt object toe.

Verschijning van de aanwijzing
Aanwijzingen bestaan uit drie primaire elementen, die elk kunnen worden gecontroleerd door de volgende eigenschappen:

- ObjectText — Een optionele naam voor het object waarmee wordt gecommuniceerd.
- ActionText — Een optionele actienaam die aan de gebruiker wordt getoond.
- KeyboardKeyCode — De toetsenbordtoets die de aanwijzing activeert.
- GamepadKeyCode — De gamepadknop die de aanwijzing activeert.
Om de verschijning van de aanwijzing voor de gevangenisdeur aan te passen, maak je de volgende wijzigingen:
Zoek in het Properties venster de ObjectText eigenschap en typ Deur.

Voor de ActionText eigenschap, typ Kies Slot.

Activeringsafstand
Aanwijzingen verschijnen wanneer de character van de gebruiker zich binnen het gedefinieerde MaxActivationDistance bereik van het ouderobject van de aanwijzing bevindt.

De standaardwaarde werkt in de meeste gevallen goed, maar je kunt de gebruikersinteractie dichter bij het slot brengen door MaxActivationDistance in te stellen op 4.

Houdduur
De waarde van de HoldDuration eigenschap bepaalt hoe snel de actie van de aanwijzing wordt geactiveerd, in seconden. Aangezien deze deur moet worden geopend om te ontgrendelen, wijzig de HoldDuration eigenschap naar 4.

Implementeer een actie
De beste manier om aanwijzingsevents te detecteren is via ProximityPromptService — dit stelt je in staat om events centraal te detecteren zonder een script aan elk aanwijzingobject te koppelen.
Een basisstructuur is als volgt:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Detecteer wanneer de aanwijzing wordt geactiveerd
local function onPromptTriggered(promptObject, player)
end
-- Detecteer wanneer de aanwijzing vasthouden begint
local function onPromptHoldBegan(promptObject, player)
end
-- Detecteer wanneer de aanwijzing vasthouden eindigt
local function onPromptHoldEnded(promptObject, player)
end
-- Verbind aanwijzingsevents met verwerkingsfuncties
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)| Evenement | Beschrijving |
|---|---|
| PromptTriggered | Wordt geactiveerd wanneer een gebruiker interactie heeft met een aanwijzing (na de duur voor een aanwijzing met een niet-nul HoldDuration). |
| PromptButtonHoldBegan | Wordt geactiveerd wanneer een gebruiker begint met interactie met een aanwijzing met een niet-nul HoldDuration. |
| PromptButtonHoldEnded | Wordt geactiveerd wanneer een gebruiker stopt met interactie met een aanwijzing met een niet-nul HoldDuration |
In het Dungeon Delve project worden deze evenementen beheerd door het PromptEvents script binnen ServerScriptService.

Binnen het script roepen de bovenstaande evenementen eenvoudig functies aan binnen de ObjectActions ModuleScript, die ook in ServerScriptService is te vinden.
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Detecteer wanneer de aanwijzing wordt geactiveerd
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Detecteer wanneer de aanwijzing vasthouden begint
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Detecteer wanneer de aanwijzing vasthouden eindigt
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Verbind aanwijzingsevents met verwerkingsfuncties
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)Nabijheidsaanwijzingen zijn een handige en aanpasbare oplossing voor interactie met objecten in het spel. Bekijk de ProximityPrompt en ProximityPromptService referentiepagina's voor nog meer manieren om het gedrag van aanwijzingen te controleren, en verken andere interactieve objecten in Dungeon Delve voor creatieve inspiratie.