Tutorials für Fortgeschrittene

Nähe-Eingabeaufforderungen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Sie können interaktive Nähe-Eingabeaufforderungen erstellen, die erscheinen, wenn Benutzer sich Objekten im 3D-Raum nähern, und dann Aktionen bei Benutzereingaben auslösen.

Dieses Tutorial verwendet das Projekt Dungeon Delve als Showcase. Um mitzumachen, öffnen Sie es in Studio, bevor Sie fortfahren.

Option 'In Studio bearbeiten' von der Hauptseite der Erfahrung

Eine Eingabeaufforderung erstellen

Bildschirmaufforderungen werden durch ein ProximityPrompt-Objekt erzeugt, das an eine Attachment, BasePart oder Model angehängt ist.

  1. Wählen Sie das Modell PrisonDoor in der 3D-Ansicht oder im Explorer (WorkspacePromptObjectsPrisonDoor).

  2. Erweitern Sie seinen Baum und wählen Sie das Objekt Door aus.

  3. Das Platzieren einer Eingabeaufforderung auf einer Attachment gibt Ihnen mehr Kontrolle darüber, wo der Interaktionspunkt passiert, im Vergleich zum direkten Platzieren auf dem Teil/Modell. Fügen Sie eine neue Attachment ein und benennen Sie sie in PromptAttachment um.

  4. Suchen Sie die Position-Eigenschaft des neuen Anhangs und setzen Sie sie auf -2.25, -0.5, -0.5. Dies verschiebt es vor das Schlüsselloch der Tür.

  5. Bewegen Sie den Mauszeiger über PromptAttachment und fügen Sie ein neues ProximityPrompt-Objekt ein.

Erscheinungsbild der Eingabeaufforderung

Eingabeaufforderungen bestehen aus drei Hauptelementen, von denen jedes durch die folgenden Eigenschaften gesteuert werden kann:

  • ObjectText — Ein optionaler Name für das Objekt, mit dem interagiert wird.
  • ActionText — Ein optionaler Aktionsname, der dem Benutzer angezeigt wird.
  • KeyboardKeyCode — Die Taste auf der Tastatur, die die Eingabeaufforderung auslöst.
  • GamepadKeyCode — Die Taste auf dem Gamepad, die die Eingabeaufforderung auslöst.

Um das Erscheinungsbild der Eingabeaufforderung für die Tür zu ändern, nehmen Sie die folgenden Anpassungen vor:

  1. Suchen Sie im Eigenschaften-Fenster die ObjectText-Eigenschaft und geben Sie Tür ein.

  2. Geben Sie für die ActionText-Eigenschaft Schloss knacken ein.

Aktivierungsdistanz

Eingabeaufforderungen erscheinen, wenn sich die Figur des Benutzers innerhalb des definierten Bereichs MaxActivationDistance des übergeordneten Objekts der Eingabeaufforderung bewegt.

Der Standardwert funktioniert in den meisten Fällen gut, aber Sie können die Benutzereingabe näher am Schloss platzieren, indem Sie MaxActivationDistance auf 4 ändern.

Haltezeit

Der Wert der HoldDuration-Eigenschaft bestimmt, wie schnell die Aktion der Eingabeaufforderung in Sekunden ausgelöst wird. Da diese Tür geknackt werden muss, um sie zu entriegeln, ändern Sie die HoldDuration-Eigenschaft auf 4.

Eine Aktion implementieren

Der beste Weg, Eingabeaufforderungsereignisse zu erkennen, ist über ProximityPromptService — so können Sie Ereignisse zentral erkennen, ohne ein Skript an jedes Eingabeaufforderungsobjekt anzuhängen.

Ein grundlegendes Framework sieht folgendermaßen aus:


local ProximityPromptService = game:GetService("ProximityPromptService")
-- Erfassen, wenn die Eingabeaufforderung ausgelöst wird
local function onPromptTriggered(promptObject, player)
end
-- Erfassen, wenn das Halten der Eingabeaufforderung beginnt
local function onPromptHoldBegan(promptObject, player)
end
-- Erfassen, wenn das Halten der Eingabeaufforderung endet
local function onPromptHoldEnded(promptObject, player)
end
-- Eingabeaufforderungsereignisse mit Handlungsfunktionen verbinden
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
EreignisBeschreibung
PromptTriggeredWird ausgelöst, wenn ein Benutzer mit einer Eingabeaufforderung interagiert (nach der Dauer für eine Eingabeaufforderung mit einer HoldDuration von mehr als null).
PromptButtonHoldBeganWird ausgelöst, wenn ein Benutzer mit einer Eingabeaufforderung mit einer HoldDuration von mehr als null beginnt zu interagieren.
PromptButtonHoldEndedWird ausgelöst, wenn ein Benutzer aufhört, mit einer Eingabeaufforderung mit einer HoldDuration von mehr als null zu interagieren.

Im Projekt Dungeon Delve werden diese Ereignisse durch das Skript PromptEvents innerhalb von ServerScriptService verwaltet.

Innerhalb des Skripts rufen die oben genannten Ereignisse einfach Funktionen innerhalb des ModuleScript ObjectActions auf, das sich ebenfalls in ServerScriptService befindet.


local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Erfassen, wenn die Eingabeaufforderung ausgelöst wird
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Erfassen, wenn das Halten der Eingabeaufforderung beginnt
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Erfassen, wenn das Halten der Eingabeaufforderung endet
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Eingabeaufforderungsereignisse mit Handlungsfunktionen verbinden
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)

Nähe-Eingabeaufforderungen sind eine praktische und anpassbare Lösung für die Interaktion mit Objekten im Spiel. Überprüfen Sie die Referenzseiten zu ProximityPrompt und ProximityPromptService für noch mehr Möglichkeiten zur Steuerung des Verhaltens von Eingabeaufforderungen, und erkunden Sie andere interaktive Objekte in Dungeon Delve für kreative Inspiration.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.