Dodawanie prompts dotyczących bliskości

*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 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ć.

Edit in Studio option from the experience's main page

Utwórz pytanie

Wskazówki na ekranie są generowane przez obiekt ProximityPrompt , który jest związany z Attachment , BasePart lub 2>Class.Model2> .

  1. Wybierz model PrisonDoor w widoku 3D lub z Explorera ( PracaObiekty → 1>PrisonDoor1> ).

  2. Rozwiej jego drzewo i wybierz obiekt Drzwi .

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

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

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

  1. W oknie Właściwości znajdź Obiekt właściwość i wpisz Drzwi.

  2. 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)
WydarzenieOpis
PromptTriggeredWyst?puje, gdy u?ytylizator interakcji z promptem (po d?urze dla promptu bez niewielko?ci HoldDuration).
PromptButtonHoldBeganWystępuje, gdy użytkownik zaczyna interagować z prośbą o nie zero HoldDuration .
PromptButtonHoldEndedWystą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.