In-Game Tools sind interaktive Werkzeuge, die Spieler in Sitzungen ausrüsten können, wie Waffen, Zauberstäbe, Taschenlampen, Schlüssel und mehr. Sie können Werkzeuge entwerfen und sie im Inventar eines Spielers einfügen oder sie in der Welt als Abholungen platzieren.
Erstellen Sie ein In-Game-Tool
Das Tool-Objekt ist die Grundlage jedes Werkzeugs in Roblox, daher müssen Sie eines erstellen. Es ist einfacher, eine Vorschau zu sehen, wie ein Werkzeug aussieht, indem Sie es im Workspace entwerfen, und später können Sie es zu einem Inventar-Element oder einem verdienten/gekauften-Element machen.
Wählen Sie das neue Tool aus, greifen Sie auf das Eigenschaften-Fenster zu und passen Sie an, wie das Werkzeug im Inventar des Spielers erscheinen soll:
- TextureId — Gibt die Bild-Asset-ID für das Werkzeug im Inventar eines Spielers an.
- ToolTip — Der Tooltip-Name beim Überfahren für das Werkzeug im Inventar eines Spielers.

Entscheiden Sie, ob das Werkzeug ein physisches Werkzeug in der 3D-Umgebung (am häufigsten) oder ein nicht-physisches Werkzeug sein soll, das einfach das Inventar eines Spielers belegt und auf deren Eingaben reagiert.
Physisches Werkzeug
Nachdem Sie die Tool-Instanz für ein physisches Werkzeug erstellt haben, müssen Sie Teile/Meshes hinzufügen, um sein Aussehen in der 3D-Welt zu gestalten. Sie müssen auch einen Griff einfügen, den die Spielercharaktere halten.
Teile/Meshes hinzufügen
In-Game-Tools können aus einem oder mehreren Parts und/oder MeshParts bestehen. Wenn Sie das Werkzeug aus mehreren Teilen konstruieren, denken Sie daran, sie alle mit WeldConstraints oder anderen mechanischen Einschränkungen zu verbinden, damit das Werkzeug als Einheit intakt bleibt, während der Spieler es herumträgt.

Den Griff festlegen
Um es den Spielern zu ermöglichen, Werkzeuge herumzutragen, muss ein Teil des Werkzeugs Handle genannt werden. Hier wird das Werkzeug am RightHand Körperteil (R15) oder am Right Arm-Teil (R6) des Charaktermodells befestigt.
Wenn das Werkzeug nur aus einem MeshPart besteht, benennen Sie dieses Teil einfach Handle. Andernfalls können Sie ein separates Teil mit dem Namen Handle als direktes Kind des übergeordneten Tool einfügen und es dann mit einem WeldConstraint oder mechanischen Einschränkungen an ein anderes Teil anbringen.
Das folgende Beispiel zeigt ein Werkzeug mit drei Instanzen: dem Handle-Mesh, einer RopeConstraint und einem Laternen-Mesh, das an dem Seil hängt.

Die Griffposition/Ausrichtung anpassen
Die Grip-Eigenschaft des Werkzeugs ist ein CFrame, das angibt, wie das Werkzeug relativ zum haltenden Charakter positioniert und ausgerichtet ist.

Da die ideale Griffposition/Ausrichtung für jedes Werkzeug unterschiedlich ist, müssen Sie mit den Werten experimentieren, bis der Griff Ihres Werkzeugs korrekt aussieht. Das folgende Beispiel zeigt mögliche falsche und korrekte Grip-Einstellungen für die hängende Laterne:


Nicht-physisches Werkzeug
Ein nicht-physisches Tool belegt einfach das Inventar eines Spielers und reagiert auf deren Eingaben. Zum Beispiel könnte ein Rollenspiel eine Reihe von magischen Zaubern enthalten, die Spieler durch ihr Inventar "wirken" können.

Nicht-physische Werkzeuge erfordern keine 3D-Zusammensetzung und verwenden kein Handle-Teil, daher sollten Sie die RequiresHandle-Eigenschaft des Werkzeugs deaktivieren:

Werkzeuge zu einem Spiel hinzufügen
Sobald Sie Ihr In-Game-Tool erstellt haben, müssen Sie es im richtigen Bereich der Explorer-Hierarchie platzieren. Wo Sie das Werkzeug in der Hierarchie platzieren, hängt von seiner beabsichtigten Verwendung ab.
Spielerinventar
Wenn Sie möchten, dass alle Spieler mit einem Werkzeug in ihrem Inventar starten, legen Sie es in den StarterPack-Container. Wenn ein Spieler spawnt, kopiert das System das Werkzeug in seinen Backpack. Von dort aus kann der Spieler das Werkzeug ausrüsten, indem er auf das Inventar-Symbol klickt oder die zugehörige Taste wie 1 oder 2 drückt.

Beachten Sie, dass Werkzeuge in der Reihenfolge, in der sie zu StarterPack hinzugefügt wurden, in das Inventar des Spielers (Backpack) kopiert werden. Für eine kontrolliertere Reihenfolge können Sie ein LocalScript zu StarterPack hinzufügen, das die Werkzeuge vorübergehend in ReplicatedStorage verschiebt und sie dann in der im order-Tabelle angegebenen Reihenfolge wieder in Backpack umschließt.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local order = {"WaterSpell", "FireSpell", "AirSpell", "EarthSpell"}
local backpack = script.Parent
for _, item in backpack:GetChildren() do
if item:IsA("Tool") then
item.Parent = ReplicatedStorage
end
end
-- Werkzeuge in der angegebenen Reihenfolge wieder umschließen
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
endSammelbares Werkzeug
Wenn Sie es den Spielern ermöglichen möchten, physische Werkzeuge zu sammeln, während sie die 3D-Welt erkunden, platzieren Sie die Werkzeuge im Workspace, genau wie normale 3D-Objekte. Gesammelte Werkzeuge werden automatisch ausgerüstet und dem Inventar des Spielers hinzugefügt (Sie müssen keine zusätzliche Kollisionsüberprüfung hinzufügen, damit Charaktere das Werkzeug greifen können).
Wie im Abschnitt Teile/Meshes hinzufügen erwähnt, sollten Werkzeugteile normalerweise nicht Anchored sein, da die Spielercharaktere an Ort und Stelle stecken bleiben, wenn sie ein verankertes Werkzeug aufheben oder ausrüsten. Wenn Sie jedoch ein sammelbares Werkzeug an einem bestimmten Ort in der 3D-Welt verankern möchten, z. B. leicht über dem Boden schwebend, können Sie das folgende Script zum Werkzeug hinzufügen, um seine Teile beim Einsammeln zu entankern.
local tool = script.Parent
tool.Equipped:Connect(function()
for _, part in tool:GetDescendants() do
if part:IsA("BasePart") and part.Anchored then
part.Anchored = false
end
end
end)Verdientes/gekauftes Werkzeug
Wenn Sie Werkzeuge als Belohnungen festlegen möchten, wenn Spieler Aufgaben erfüllen, oder Werkzeuge zum Verkauf in einem In-Game-Shop anbieten möchten, legen Sie diese Werkzeuge in ReplicatedStorage. Von dort aus können Sie Clone() ein Werkzeug zum Backpack des Spielers zur richtigen Zeit hinzufügen.

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- Erstellen Sie einen Klon des Werkzeugs
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local clone = tool:Clone()
clone.Parent = backpack -- Fügt den Klon dem Inventar des Spielers hinzu
endWerkzeugeffekte implementieren
Nachdem Sie Werkzeuge zu Ihrem Spiel hinzugefügt haben, können Sie Skripte implementieren, um es den Spielern zu ermöglichen, ihre Werkzeuge zu verwenden und die gewünschten Aktionen auszuführen. Die folgenden werkzeugspezifischen Ereignisse zeigen den Zustand des Werkzeugs und die Eingaben des Spielers damit an.
- Equipped() — Wird ausgelöst, wenn der Spieler das Werkzeug aus seinem Rucksack auswählt.
- Unequipped() — Wird ausgelöst, wenn der Spieler die Werkzeuge wechselt oder das Werkzeug fallen lässt.
- Activated() — Wird ausgelöst, wenn der Spieler beginnt, das Werkzeug zu aktivieren (klickt, tippt oder drückt den hinteren rechten Trigger auf einem Gamepad).
- Deactivated() — Wird ausgelöst, wenn der Spieler die Aktivierungseingabe stoppt (lässt die Taste oder Berührung los).
local tool = script.Parent
local function onEquip()
print(tool.Name, "Werkzeug ausgerüstet")
end
local function onUnequip()
print(tool.Name, "Werkzeug abgenommen")
end
local function onActivate()
print(tool.Name, "Werkzeug aktiviert")
end
local function onDeactivate()
print(tool.Name, "Werkzeug deaktiviert")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)Werkzeugereignisse werden nur in clientseitigen LocalScripts ausgelöst, da nur das Gerät des Spielers weiß, wann Eingaben erfolgen. Daher erfordern die meisten Werkzeuge sowohl ein LocalScript als auch ein serverseitiges Script, wobei jedes bestimmte Aspekte des Verhaltens des Werkzeugs behandelt und ein RemoteEvent Informationen vom Client zum Server überträgt (siehe Remote-Events und Rückrufe für weitere Informationen).
Im Folgenden sind Beispielwerkzeuge und deren Verhaltensweisen aufgeführt, die entweder von einem LocalScript oder einem Script verwaltet werden:
| Werkzeug | LocalScript | Script |
|---|---|---|
| Zauberstab des Erstellers | Erkennt, wo der Spieler das Werkzeug aktiviert (Activated()). | Erstellt ein neues Teil an dem Ort in der 3D-Welt, wo der Spieler berührt oder klickt. |
| Unsichtbarkeitsumhang | Erkennt, wenn der Spieler das Werkzeug ausrüstet (Equipped()) oder das Werkzeug abnimmt (Unequipped()). | Macht den Spieler für alle anderen Spieler unsichtbar, während der Umhang ausgerüstet ist, und stellt den Spieler bei Abnahme des Umhangs wieder vollständig sichtbar. |
| Mega-Bogen | Erkennt, wie lange der Spieler das Werkzeug aktiviert (Zeit zwischen Activated() und Deactivated()). | Schießt einen magischen Pfeil mit größerer oder geringerer Kraft, abhängig von der erkannten Aktivierungszeit. |
