Możesz tworzyć interaktywne powiadomienia o zbliżeniu, które pojawiają się, gdy użytkownicy zbliżają się do obiektów w przestrzeni 3D, a następnie uruchamiają działania na wejściu użytkownika.
Ten samouczek wykorzystuje projekt Dungeon Delve jako pokaz. Aby go przestudiować, otwórz go w Studio, zanim przejdziesz dalej.

Utwórz monit o powiadomienie
Powiadomienia na ekranie są generowane przez obiekt ProximityPrompt powiązany z Attachment, BasePart lub Model.
Wybierz model Drzwi więzienne w widoku 3D lub z Explorera ( Przestrzeń robocza → PromptObjects → Drzwi więzienne ).
Rozszerz jego drzewo i wybierz obiekt Drzwi .
Umieszczenie monitu na Attachment daje ci większą kontrolę nad tym, gdzie wystąpi punkt interakcji, w porównaniu do umieszczenia go bezpośrednio na części/modelu.Włóż nowe załącznik i zmień nazwę na PromptAttachment .
Zlokalizuj właściwość Pozycja nowego załącznika i ustaw ją na -2.25 , -0.5 , - 0.5 .Sprawi to, że znajdzie się przed otworem kluczowym drzwi.
Przejdź nad Powiadomienie załącznika i włóż nowy obiekt Powiadomienie o zbliżeniu .
Wygląd wygląd
Pomniki składają się z trzech głównych elementów, każdy z których może być kontrolowany przez następujące właściwości:

- Tekst obiektu — Opcjonalna nazwa obiektu, z którym jest interakcja.
- Nazwa akcji — Opcjonalna nazwa akcji wyświetlana użytkownikowi.
- KeyboardKeyCode — Klawisz klawiatury, który uruchomi monit o podanie.
- Kod klucza do klawiatury gry — Przycisk klawiatury, który uruchomi monit o podanie.
Aby dostosować wygląd ikony drzwi więzienia, wprowadź następujące zmiany:
W oknie Właściwości znajdź właściwość Objektowy tekst i wprowadź Drzwi .
Dla właściwości ActionText , wprowadź Pick Lock .
Dystans aktywacji
Powiadomienia pojawiają się, gdy postać użytkownika porusza się w zakresie MaxActivationDistance zdefiniowanym dla obiektu powiadomienia.

Domyślna wartość działa dobrze w większości przypadków, ale możesz przesunąć interakcję użytkownika bliżej blokady, zmieniając MaxActivationDistance na 4 .

Przytrzymaj czas
Wartość właściwości HoldDuration określa, jak szybko akcja monitu jest uruchamiana, w sekundach.Ponieważ drzwi muszą być wybrane, aby je odblokować, zmień właściwość Czas trzymania na 4 .

Wdroż akcji
Najlepszym sposobem wykrycia szybkich zdarzeń jest poprzez ProximityPromptService — pozwala to wykrywać zdarzenia centralnie bez przypisywania skryptu do każdego obiektu wyskakującego.
Podstawowy framework wygląda następująco:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Wykryj, kiedy wyskakuje monit,
local function onPromptTriggered(promptObject, player)
end
-- Wykryj, kiedy rozpoczyna się utrzymywanie monitu
local function onPromptHoldBegan(promptObject, player)
end
-- Wykryj, kiedy końce przytrzymywania są aktywne
local function onPromptHoldEnded(promptObject, player)
end
-- Połącz zdarzenia wstępne z funkcjami obsługi
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Wydarzenie | Opis |
---|---|
PromptTriggered | Wystrzeliwuje, gdy użytkownik interakuje z monitem (po okresie trwania monitu z niezerowym HoldDuration ). |
PromptButtonHoldBegan | Wystrzeliwuje, gdy użytkownik zaczyna interakcję z pytaniem o niezerowe HoldDuration . |
PromptButtonHoldEnded | Wystrzeliwuje, gdy użytkownik przestaje interakcować z pytaniem o niezerowe HoldDuration |
W projekcie Dungeon Delve te wydarzenia są zarządzane przez skrypt PromptEvents w ramach ServerScriptService .

W skrypcie wydarzenia powyżej po prostu wzywają funkcje w ramach Akcji obiektowych ModuleScript, również znajdujące się w ServerScriptService .
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Wykryj, kiedy wyskakuje monit,
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Wykryj, kiedy rozpoczyna się utrzymywanie monitu
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Wykryj, kiedy końce przytrzymywania są aktywne
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Połącz zdarzenia wstępne z funkcjami obsługi
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Powiadomienia o zbliżeniu są wygodnym i dostosowalnym rozwiązaniem do interakcji z obiektami w grze.Sprawdź strony referencyjne ProximityPrompt i ProximityPromptService na temat jeszcze większej liczby sposobów kontroli zachowania monitu oraz odkryj inne interaktywne obiekty w Dungeon Delve na kreatywną inspirację.