Powiadomienia o zbliżeniu

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

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.

Edit in Studio option from the experience's main page

Utwórz monit o powiadomienie

Powiadomienia na ekranie są generowane przez obiekt ProximityPrompt powiązany z Attachment, BasePart lub Model.

  1. Wybierz model Drzwi więzienne w widoku 3D lub z Explorera ( Przestrzeń roboczaPromptObjectsDrzwi więzienne ).

  2. Rozszerz jego drzewo i wybierz obiekt Drzwi .

  3. 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 .

  4. 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.

  5. 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:

  1. W oknie Właściwości znajdź właściwość Objektowy tekst i wprowadź Drzwi .

  2. 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)
WydarzenieOpis
PromptTriggeredWystrzeliwuje, gdy użytkownik interakuje z monitem (po okresie trwania monitu z niezerowym HoldDuration ).
PromptButtonHoldBeganWystrzeliwuje, gdy użytkownik zaczyna interakcję z pytaniem o niezerowe HoldDuration .
PromptButtonHoldEndedWystrzeliwuje, 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ę.