Możesz tworzyć interaktywne wskazówki dotykowe, które pojawiają się, gdy użytkownicy zbliżają się do obiektów w przestrzeni 3D, następnie wykonują działania na wpisie użytkownika.
Ten samouczek używa projektu Dungeon Delve jako okładki. Aby go zaobserwować, otwórz go w Studio przed тем, jak postępować.
Utwórz pytanie
Wskazówki na ekranie są generowane przez obiekt ProximityPrompt , który jest związany z Attachment , BasePart lub 2>Class.Model2> .
Wybierz model PrisonDoor w widoku 3D lub z Explorera ( Praca → Obiekty → 1>PrisonDoor1> ).
Rozwiej jego drzewo i wybierz obiekt Drzwi .
Umieszczenie pytania na Attachment daje Ci więcej kontroli nad tym, gdzie następuje interakcja, w porównaniu z umieszczeniem jej bezpośrednio na części/modelu. Wstaw nowy załącznik i zmień go na PromptArrow .
Lokalizuj właściwość Pozycja nowego załącznika i ustaw ją na -2.25 , -0.5 , - 1> 0.51>. To przenieś je przed otworem klucza drzwi.
Przytrzymaj PromptConfiguration i wpisz nowy obiekt ProximityPrompt .
Wyglądaj
Powiadomienia składają się z trzech głównych elementów, każde z których można kontrolować poprzez następujące właściwości:
- ObjectText — Opcjonalna nazwa dla obiektu, z którym interakcja jest możliwa.
- ActionText — Opcjonalna nazwa akcji wyświetlana dla użytkownika.
- Kod klawiatury — klawiatura klawiatury, która wywoła prompt.
- GamepadKeyCode — przycisk na gamepadzie, który wywoła prompt.
Aby dostosować wygląd wniosku drzwi w więzieniu, dokonaj następujących zmian:
W oknie Właściwości znajdź Obiekt właściwość i wpisz Drzwi.
Dla właściwości ActionText , wpisz Pick Lock .
Odległość aktywacji
Wyświetlają się prompts, gdy postać użytkownika porusza się w obszarze MaxActivationDistance określonego przez obiekt prompts.
Domyślna wartość działa dobrze w większości przypadków, ale możesz zacisnąć interakcję użytkownika bliżej zamka poprzez zmianę MaxActivationDistance na 4 .
Czas trzymania
Wartość właściwości PrzytrzymajDuration określa, jak szybko akcja prompts'u zostanie uruchomiona, w sekundach. Ponieważ ta drzwi musi być wybrana, aby ją odblokować, zmień właściwość PrzytrzymajDuration na 4.
Zaimplementuj akcję
Najlepszym sposobem na wykrywanie wydarzeń w trybie zaproszenia jest poprzez ProximityPromptService — pozwala to wykrywać wydarzenia w centrum bez przywiązywania skryptu do każdego obiektu zaproszenia.
Podstawowym ramem jest następujący:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Wykryj, gdy jest włączone
local function onPromptTriggered(promptObject, player)
end
-- Wykryj, gdy przytrzymaние wiadomości zacznie
local function onPromptHoldBegan(promptObject, player)
end
-- Wykryj, gdy skończy się przytrzymywanie wskazówki
local function onPromptHoldEnded(promptObject, player)
end
-- Połącz wskazówkowe wydarzenia z funkcjami przetwarzania
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Wydarzenie | Opis |
---|---|
PromptTriggered | Wyst?puje, gdy u?ytylizator interakcji z promptem (po d?urze dla promptu bez niewielko?ci HoldDuration). |
PromptButtonHoldBegan | Występuje, gdy użytkownik zaczyna interagować z prośbą o nie zero HoldDuration . |
PromptButtonHoldEnded | Wystąpi, gdy użytkownik przestanie interagować z prośbą o nie zero HoldDuration |
W projekcie Dungeon Delve te wydarzenia są zarządzane przez skrypt PromptEvents w ServerScriptService .
Wewnątrz skryptu, wydarzenia powyżej po prostu wzywają funkcje w ObjectActions ModuleScript , również położone w ServerScriptService .
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Wykryj, gdy jest włączone
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Wykryj, gdy przytrzymaние wiadomości zacznie
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Wykryj, gdy skończy się przytrzymywanie wskazówki
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Połącz wskazówkowe wydarzenia z funkcjami przetwarzania
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Wtyczki prompts są wygodnym i dostosowywalnym rozwiązaniem dla interakcji obiektu w grze. Sprawdź strony referencyjne ProximityPrompt i ProximityPromptService dla więcej sposobów na kontrolowanie zachowania wtyczki, a odkryj inne interaktywne obiekty w Dungeon Delve dla inspiracji.