Du kannst interaktive Nähe-Aufforderungen erstellen, die erscheinen, wenn Benutzer Objekte im Platzansteuern, und dann Aktionen auf Benutzer-Eingaben auslösen.
Dieses Tutorial verwendet das Dungeon Delve Projekt als Showcase. Um mitzumachen, öffnen Sie es in Studio, bevor Sie fortfahren.
Erstellen Sie eine Anfrage
Auf-Bildschirm-Eingaben werden von einem ProximityPrompt -Objekt, das an einem Attachment , BasePart oder 2> Class.Model2> generiert wird, erzeugt.
Wählen Sie das PrisonDoor -Modell in der 3D-Ansicht oder von der Explorer ( Workspace → PromptObjects → 1> PrisonDoor1> ).
Erweitere seinen Baum und wähle das Tür-Objekt .
Das Platzieren eines Hinweises auf einem Attachment gibt Ihnen mehr Kontrolle darüber, wo der Interaktionspunkt auftreten kann, als ihn direkt auf das Teil/Modell zu platzieren. Fügen Sie einen neuen Anhang hinzu und benennen Sie ihn zu PromptArrow um.
Suchen Sie die neue Anhang Position -Eigenschaft und setzen Sie sie auf -2.25 , -0.5 , - 1> 0.51> . Dies wird es vor dem Schlüsselloch der Tür bewegen.
Bewegen Sie den Mauszeiger über PromptAttachment und fügen Sie ein neues ProximityPrompt Objekt ein.
Auffälliges Aussehen
Anfragen bestehen aus drei primären Elementen, von denen jeder durch die folgenden Eigenschaften steuerbar ist:
- ObjectText — ein optionales Name für das Objekt, mit dem interagiert wird.
- ActionText — Ein optionales Aktionsname wird dem Benutzer angezeigt.
- TastaturTastenCode — Die Tastaturtaste, die die Anfrage auslöst.
- GamepadKeyCode — Der Gamepad-Button, der die Anfrage auslöst.
Um das Aussehen der Gefängnis-Türanfrage anzupassen, machen Sie die folgenden Änderungen:
In dem Eigenschaften-Fenster suchen Sie die ObjektText-Eigenschaft und geben Sie Tür ein.
Für die ActionText Eigenschaften, geben Sie Pick Lock ein.
Aktivierungsreichweite
Anfragen erscheinen, wenn der Benutzer의 Charakter innerhalb der definierten MaxActivationDistance des übergeordnetes Teilbewegt sich.
Der Standardwert funktioniert in den meisten Fällen gut, aber Sie können die Benutzeroberfläche dem Benutzer näher bringen, indem Sie MaxActivationDistance auf 4 ändern.
Halte Dauer
Der HalteDuration -Werte bestimmt, wie schnell die Aktion des Popups ausgelöst wird, in Sekunden. Da diese Tür zum Freischalten aufgerufen werden muss, ändern Sie den HalteDuration -Wert auf 4 .
Eine Aktion implementieren
Der beste Weg, um Ereignisse zu erkennen, ist durch ProximityPromptService — dies ermöglicht es Sie, Ereignisse zentral zu erkennen, ohne ein Skript an jedes Ereignis-Objekt anzuhängen.
Ein grundlegendes Framework sieht wie folgt aus:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Erkennen, wenn die Anfrage gezeigt wird
local function onPromptTriggered(promptObject, player)
end
-- Erkennen, wenn die Anfrage gehalten wird
local function onPromptHoldBegan(promptObject, player)
end
-- Erkennen, wenn die Anfrage gehalten wird
local function onPromptHoldEnded(promptObject, player)
end
-- Verbinde Benutzeroereignisse mit Verarbeitungsfunktionen
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Ereignis | Beschreibung |
---|---|
PromptTriggered | Feuert, wenn ein Benutzer mit einem Anregen interagiert ( nach der Dauer für einen Anregen mit nicht null HoldDuration ). |
PromptButtonHoldBegan | Feuert, wenn ein Benutzer mit einer Anfrage von nicht null anfängt zu interagieren HoldDuration . |
PromptButtonHoldEnded | Feuert, wenn ein Benutzer auf eine Anfrage von non-Zero reagiert HoldDuration |
Im Dungeon Delve Projekt werden diese Ereignisse von dem PromptEvents Skript innerhalb von ServerScriptService verwaltet.
In dem Skript, das. PL: die Skripts, die Ereignisse oben einfach Funktionen innerhalb der ObjectActions ModuleScript aufrufen, die auch in ServerScriptService befindlich ist.
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Erkennen, wenn die Anfrage gezeigt wird
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Erkennen, wenn die Anfrage gehalten wird
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Erkennen, wenn die Anfrage gehalten wird
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Verbinde Benutzeroereignisse mit Verarbeitungsfunktionen
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Proximity-Eingaben sind eine praktische und anpassbare Lösung für die Interaktion mit Objekten im Spiel. Schauen Sie sich die ProximityPrompt und ProximityPromptService-Referenzseiten an, um weitere Möglichkeiten zur Steuerung des Verhaltens von Anfragen und die Erkundung anderer interaktiver Objekte in Dungeon Delve für kreative Inspirationen zu erkunden.