In-game tools

*Deze inhoud is vertaald met behulp van AI (bèta) en kan fouten bevatten. Klik hier om deze pagina in het Engels te bekijken.

In-game Tools zijn interactieve tools die spelers kunnen uitrusten in sessies, zoals wapens, toverstokken, zaklampen, sleutels en meer. Je kunt tools ontwerpen en ze opnemen in de inventaris van een speler of ze in de wereld plaatsen als pickups.

Maak een in-game tool

Het Tool object is de basis van elke tool in Roblox, dus je moet er een maken. Het is gemakkelijker om een tool te previewen door deze te ontwerpen in de Workspace, en later kun je het een inventaris item of een verdiend/aangekocht item maken.

  1. In de Explorer hiërarchie, beweeg je de muis over Workspace, klik op de ⊕ knop en voeg een Tool toe.

    Tool object gemaakt in de workspace
  2. Met de nieuwe Tool geselecteerd, open je het Properties venster en pas je aan hoe de tool eruit zal zien in de inventaris van de speler:

    • TextureId — Specificeert de afbeelding asset ID voor de tool in de inventaris van een speler.
    • ToolTip — De tooltip naam bij hover voor de tool in de inventaris van een speler.
  3. Bepaal of de tool een fysieke tool in de 3D omgeving (meest gebruikelijk) of een niet-fysieke tool zal zijn die simpelweg de inventaris van een speler bezet en reageert op hun input.

Fysieke tool

Nadat je de Tool instantie voor een fysieke tool hebt gemaakt, moet je onderdelen/mesh toevoegen om het uiterlijk in de 3D wereld samen te stellen. Je moet ook een handvat opnemen dat door de spelerspersonages vastgegrepen kan worden.

Voeg onderdelen/mesh toe

In-game tools kunnen bestaan uit een of meer Parts en/of MeshParts. Als je de tool uit meerdere stukken bouwt, vergeet dan niet om ze allemaal met elkaar te verbinden met WeldConstraints of andere mechanische beperkingen zodat de tool intact blijft als een eenheid terwijl de speler deze meedraagt.

Constraint pickers aangegeven in de toolbar van Studio

Stel het handvat in

Om spelers in staat te stellen tools mee te nemen, moet een onderdeel van de tool Handle worden genoemd. Dit is waar de tool aan het RightHand lichaamsdeel (R15) of Rechter Arm deel (R6) van het karaktermodel wordt bevestigd.

Als de tool uit slechts één MeshPart bestaat, noem dat onderdeel dan eenvoudig Handle. Anders kun je een apart onderdeel met de naam Handle opnemen als een direct kind van de bovenliggende Tool en het vervolgens aan een ander onderdeel bevestigen met een WeldConstraint of mechanische beperking.

Het volgende voorbeeld toont een tool met drie instanties: de Handle mesh, een RopeConstraint, en een lantaarn mesh die aan het touw hangt.

Pas de grippositie/orientatie aan

De Grip eigenschap van de tool is een CFrame die specificeert hoe de tool is gepositioneerd en georiënteerd ten opzichte van het karakter dat deze vasthoudt.

Aangezien de ideale grippositie/orientatie voor elke tool anders is, moet je experimenteren met de waarden totdat de grip van je tool er correct uitziet. Het volgende voorbeeld toont mogelijke onjuiste en correcte Grip instellingen voor de hangende lantaarn:

Lantaarn sleept over de grond met Grip.Position van (0, -2, 0) en Grip.Orientation van (-90, 0, 0)
Lantaarn voor het karakter met Grip.Position van (0, -1.5, 0) en Grip.Orientation van (25, 0, 0)

Niet-fysieke tool

Een niet-fysieke Tool bezet simpelweg de inventaris van een speler en reageert op hun input. Bijvoorbeeld, een rollenspel kan een reeks magische spreuken bevatten die spelers kunnen "uitvoeren" via hun inventaris.

Niet-fysieke tools vereisen geen 3D samenstelling en maken geen gebruik van een Handle onderdeel, dus je moet de RequiresHandle eigenschap van de tool deactiveren:

Voeg tools toe aan een spel

Zodra je klaar bent met het maken van je in-game tool, moet je deze op de juiste plaats in de Explorer hiërarchie plaatsen. Waar je de tool in de hiërarchie plaatst, hangt af van het beoogde gebruik.

Speler inventaris

Als je wilt dat alle spelers met een tool in hun inventaris beginnen, plaats deze dan in de StarterPack container. Wanneer een speler spawnt, kopieert het systeem de tool naar hun Backpack. Van daaruit kan de speler de tool uitrusten door op het inventaricon te klikken of door de bijbehorende sneltoets te drukken, zoals 1 of 2.

Let op dat tools in de inventaris van de speler (Backpack) worden gekopieerd in de volgorde waarin ze aan StarterPack zijn toegevoegd. Voor een meer gecontroleerde ordening kun je een LocalScript aan StarterPack toevoegen die tijdelijk de tools naar ReplicatedStorage verplaatst en ze vervolgens opnieuw aan Backpack plaatst in de volgorde die is opgegeven in de order tabel.

Herschik Inventaris
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
-- Herplaats tools naar de rugzak in de opgegeven volgorde
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
end

Verzamelbare tool

Als je spelers wilt toestaan om fysieke tools te verzamelen terwijl ze de 3D wereld verkennen, plaats de tools dan in de Workspace zoals normale 3D objecten. Verzamelde tools worden automatisch uitgerust en toegevoegd aan de inventaris van de speler (je hoeft geen extra botsingsdetectie toe te voegen voor personages om de tool op te pakken).

Zoals opgemerkt in de voeg onderdelen/mesh toe sectie, moeten toolonderdelen doorgaans niet Anchored zijn, aangezien spelerspersonages vast komen te zitten wanneer ze een verankerde tool oppakken of uitrusten. Als je echter een verzamelbare tool op een specifieke plaats in de 3D wereld wilt verankeren, zoals iets boven de grond zwevend, kun je de volgende Script aan de tool toevoegen om zijn onderdelen te ontankeren bij verzameling.

Ontank Tool bij Uitrusting/Verzameling
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)

Verdiende/aangekochte tool

Als je tools wilt instellen als beloningen voor wanneer spelers taken voltooien, of tools wilt aanbieden te koop in een in-game winkel, plaats die tools dan in ReplicatedStorage. Van daaruit kun je Clone() een tool naar de Backpack van de speler op het juiste moment.

Kloon Tool naar Inventaris van de Speler
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- Maak een kloon van de tool
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local clone = tool:Clone()
clone.Parent = backpack -- Voegt kloon toe aan de rugzak van de speler
end

Implementeer tool effecten

Nadat je tools aan je spel hebt toegevoegd, kun je scripts implementeren om spelers in staat te stellen hun tools te gebruiken en de gewenste acties uit te voeren. De volgende tool-specifieke evenementen geven de status van de tool en de input van de speler ermee aan.

  • Equipped() — Vindt plaats wanneer de speler de tool selecteert uit hun rugzak.
  • Unequipped() — Vindt plaats wanneer de speler van tool wisselt of de tool laat vallen.
  • Activated() — Vindt plaats wanneer de speler begint de tool te activeren (klikt, tikt of drukt op de achter-rechter trigger op een gamepad).
  • Deactivated() — Vindt plaats wanneer de speler stopt met de activatie-input (laat de knop of aanraking los).
Tool Evenementen Sjabloon
local tool = script.Parent
local function onEquip()
print(tool.Name, "tool uitgerust")
end
local function onUnequip()
print(tool.Name, "tool niet meer uitgerust")
end
local function onActivate()
print(tool.Name, "tool geactiveerd")
end
local function onDeactivate()
print(tool.Name, "tool gedeactiveerd")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)

Toegepaste tool evenementen worden alleen geactiveerd in client-side LocalScripts omdat alleen het apparaat van de speler weet wanneer input plaatsvindt. Als gevolg hiervan vereisen de meeste tools zowel een LocalScript als een server-side Script waar elk bepaalde aspecten van het gedrag van de tool afhandelt en een RemoteEvent informatie van de client naar de server doorgeeft (zie remote events and callbacks voor meer informatie).

Hieronder volgen voorbeeldtools en hun gedragingen beheerd door ofwel een LocalScript of een Script:

ToolLocalScriptScript
Creator's WandDetecteert waar de speler de tool activeert (Activated()).Maakt een nieuw onderdeel op de locatie binnen de 3D wereld waar de speler aanraakte of klikte.
Invisibility CloakDetecteert wanneer de speler de tool uitrust (Equipped()) of de tool niet meer uitrust (Unequipped()).Maakt de speler onzichtbaar voor alle andere spelers terwijl de cloak is uitgerust en herstelt de speler naar volledige zichtbaarheid wanneer de cloak niet meer is uitgerust.
Mega‑BowDetecteert hoe lang de speler de tool activeert (tijd tussen Activated() en Deactivated()).Schoot een magische pijl met grotere of kleinere kracht, afhankelijk van de gedetecteerde activatietijd.
©2026 Roblox Corporation. Roblox, het Roblox-logo en Powering Imagination behoren tot onze geregistreerde en niet-geregistreerde handelsmerken in de VS en andere landen.