Możesz tworzyć interaktywne wskazówki z bliskiej odległości, które pojawiają się, gdy użytkownicy zbliżają się do obiektów w przestrzeni 3D, a następnie wyzwalają akcje na podstawie wejścia użytkownika.
Ten samouczek wykorzystuje projekt Dungeon Delve jako przykład. Aby śledzić instrukcje, otwórz go w Studio przed kontynuowaniem.

Utwórz podpowiedź
Podpowiedzi wyświetlane na ekranie są generowane przez obiekt ProximityPrompt przypisany do Attachment, BasePart lub Model.
Wybierz model PrisonDoor w widoku 3D lub z Explorer (Workspace → PromptObjects → PrisonDoor).


Rozwiń jego drzewo i wybierz obiekt Door.

Umieszczenie podpowiedzi na Attachment daje większą kontrolę nad tym, gdzie występuje punkt interakcji, w porównaniu do umieszczania go bezpośrednio na części/modelu. Wstaw nowy Attachment i zmień jego nazwę na PromptAttachment.

Znajdź właściwość Position nowego załącznika i ustaw ją na -2.25, -0.5, -0.5. To przeniesie go przed otwór na klucz w drzwiach.


Najedź kursorem na PromptAttachment i wstaw nowy obiekt ProximityPrompt.

Wygląd podpowiedzi
Podpowiedzi składają się z trzech podstawowych elementów, z których każdy można kontrolować za pomocą następujących właściwości:

- ObjectText — Opcjonalna nazwa obiektu, z którym wchodzi się w interakcję.
- ActionText — Opcjonalna nazwa akcji wyświetlana użytkownikowi.
- KeyboardKeyCode — Klawisz na klawiaturze, który wyzwoli podpowiedź.
- GamepadKeyCode — Przycisk na gamepadzie, który wyzwoli podpowiedź.
Aby dostosować wygląd podpowiedzi do zamka w drzwiach więziennych, wprowadź następujące zmiany:
W oknie Właściwości znajdź właściwość ObjectText i wpisz Door.

W polu właściwości ActionText wpisz Pick Lock.

Odległość aktywacji
Podpowiedzi pojawiają się, gdy postać użytkownika porusza się w zdefiniowanym zakresie MaxActivationDistance obiektu nadrzędnego podpowiedzi.

Domyślna wartość działa dobrze w większości przypadków, ale można przybliżyć interakcję użytkownika z zamkiem, zmieniając MaxActivationDistance na 4.

Czas trzymania
Wartość właściwości HoldDuration określa, jak szybko akcja podpowiedzi jest wyzwalana, w sekundach. Ponieważ te drzwi muszą być otwierane, zmień właściwość HoldDuration na 4.

Zaimplementuj akcję
Najlepszym sposobem na wykrywanie zdarzeń podpowiedzi jest użycie ProximityPromptService — pozwala to na centralne wykrywanie zdarzeń bez przyłączania skryptu do każdego obiektu podpowiedzi.
Podstawowa struktura jest następująca:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Wykrywanie, kiedy podpowiedź jest wyzwalana
local function onPromptTriggered(promptObject, player)
end
-- Wykrywanie, kiedy trzymanie podpowiedzi się zaczyna
local function onPromptHoldBegan(promptObject, player)
end
-- Wykrywanie, kiedy trzymanie podpowiedzi się kończy
local function onPromptHoldEnded(promptObject, player)
end
-- Połączenie zdarzeń podpowiedzi z funkcjami obsługi
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
| Zdarzenie | Opis |
|---|---|
| PromptTriggered | Wywoływane, gdy użytkownik wchodzi w interakcję z podpowiedzią (po czasie trwania podpowiedzi z niezerową wartością HoldDuration). |
| PromptButtonHoldBegan | Wywoływane, gdy użytkownik zaczyna wchodzić w interakcję z podpowiedzią o niezerowej wartości HoldDuration. |
| PromptButtonHoldEnded | Wywoływane, gdy użytkownik przestaje wchodzić w interakcję z podpowiedzią o niezerowej wartości HoldDuration |
W projekcie Dungeon Delve te zdarzenia są zarządzane przez skrypt PromptEvents w ServerScriptService.

Wewnątrz skryptu te zdarzenia po prostu wywołują funkcje w ModuleScript o nazwie ObjectActions, która również znajduje się w ServerScriptService.
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Wykrywanie, kiedy podpowiedź jest wyzwalana
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Wykrywanie, kiedy trzymanie podpowiedzi się zaczyna
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Wykrywanie, kiedy trzymanie podpowiedzi się kończy
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Połączenie zdarzeń podpowiedzi z funkcjami obsługi
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Wskazówki z bliskiej odległości to wygodne i dostosowywalne rozwiązanie dla interakcji z obiektami w grze. Sprawdź strony referencyjne ProximityPrompt i ProximityPromptService, aby poznać jeszcze więcej sposobów na kontrolowanie zachowania podpowiedzi, a także eksploruj inne interaktywne obiekty w Dungeon Delve w celu zdobycia inspiracji.