Outils en jeu

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Les Tools en jeu sont des outils interactifs que les joueurs peuvent équiper dans les sessions, tels que des armes, des baguettes magiques, des lampes de poche, des clés, et bien plus encore. Vous pouvez concevoir des outils et les inclure dans l'inventaire d'un joueur ou les placer dans le monde comme des objets à ramasser.

Créer un outil en jeu

L'objet Tool est la base de tout outil dans Roblox, vous devez donc en créer un. Il est plus facile de prévisualiser l'apparence d'un outil en le concevant dans le Workspace, et plus tard vous pourrez en faire un élément d'inventaire ou un élément gagné/acheté.

  1. Dans la hiérarchie de l'Explorer, survolez Workspace, cliquez sur le bouton et insérez un Tool.

    Objet Outil créé dans l'espace de travail
  2. Avec le nouveau Tool sélectionné, accédez à la fenêtre des Propriétés et personnalisez l'apparence de l'outil dans l'inventaire du joueur :

    • TextureId — Spécifie l'ID de l'asset d'image pour l'outil dans l'inventaire d'un joueur.
    • ToolTip — Le nom de l'info-bulle au survol pour l'outil dans l'inventaire d'un joueur.
  3. Décidez si l'outil sera un outil physique dans l'environnement 3D (le plus courant) ou un outil non-physique qui occupe simplement l'inventaire d'un joueur et répond à son entrée.

Outil physique

Après avoir créé l'instance Tool pour un outil physique, vous devrez ajouter des pièces/des maillages pour composer son apparence dans le monde 3D. Vous devrez également inclure une poignée que les personnages joueurs saisissent.

Ajouter des pièces/maillages

Les outils en jeu peuvent se composer d'une ou plusieurs Parts et/ou MeshParts. Si vous construisez l'outil à partir de plusieurs pièces, n'oubliez pas de les connecter toutes ensemble en utilisant WeldConstraints ou d'autres contraintes mécaniques afin que l'outil reste intact en tant qu'unité pendant que le joueur le transporte.

Sélecteurs de contraintes indiqués dans la barre d'outils de Studio

Définir la poignée

Pour permettre aux joueurs de transporter des outils, une partie de l'outil doit être nommée Handle. C'est ici que l'outil sera attaché à la partie RightHand du modèle de personnage (R15) ou à la partie Right Arm (R6).

Si l'outil est composé d'un seul MeshPart, nommez simplement cette pièce Handle. Sinon, vous pouvez inclure une pièce distincte nommée Handle en tant que direct enfant du Tool parent, puis l'attacher à une autre partie avec un WeldConstraint ou contrainte mécanique.

L'exemple suivant montre un outil avec trois instances : le maillage Handle, un RopeConstraint, et un maillage de lanterne suspendu à la corde.

Ajuster la position/l'orientation de la prise

La propriété Grip de l'outil est un CFrame qui spécifie comment l'outil est positionné et orienté par rapport au personnage qui le tient.

Étant donné que la position/l'orientation de prise idéale est différente pour chaque outil, vous devrez expérimenter avec les valeurs jusqu'à ce que la prise de votre outil semble correcte. L'exemple suivant montre des réglages Grip incorrects et corrects pour la lanterne suspendue :

Lantern traînant au sol avec Grip.Position de (0, -2, 0) et Grip.Orientation de (-90, 0, 0)
Lantern devant le personnage avec Grip.Position de (0, -1.5, 0) et Grip.Orientation de (25, 0, 0)

Outil non-physique

Un Tool non-physique occupe simplement l'inventaire d'un joueur et répond à son entrée. Par exemple, un jeu de rôle pourrait comporter une série de sorts magiques que les joueurs peuvent "lancer" via leur inventaire.

Les outils non-physiques ne nécessitent aucune composition 3D et n'utilisent pas de partie Handle, vous devez donc désactiver la propriété RequiresHandle de l'outil :

Ajouter des outils à un jeu

Une fois que vous avez terminé de créer votre outil en jeu, vous devez le placer dans la zone correcte de la hiérarchie de l'Explorer. L'endroit où vous placez l'outil dans la hiérarchie dépend de son utilisation prévue.

Inventaire du joueur

Si vous souhaitez que tous les joueurs commencent avec un outil dans leur inventaire, placez-le à l'intérieur du conteneur StarterPack. Lorsque n'importe quel joueur apparaît, le système copie l'outil dans son Backpack. De là, le joueur peut équiper l'outil en cliquant sur son icône dans l'inventaire ou en appuyant sur la touche de raccourci associée telle que 1 ou 2.

Notez que les outils sont copiés dans l'inventaire du joueur (Backpack) dans l'ordre où ils ont été ajoutés à StarterPack. Pour un ordre plus contrôlé, vous pouvez ajouter un LocalScript à StarterPack qui déplace temporairement les outils vers ReplicatedStorage, puis les remet dans Backpack dans l'ordre spécifié dans le tableau order.

Réorganiser l'inventaire

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
-- Remettre les outils dans le sac à dos dans l'ordre spécifié
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
end

Outil collectable

Si vous voulez permettre aux joueurs de collecter des outils physiques en explorant le monde 3D, placez les outils dans le Workspace comme des objets 3D normaux. Les outils collectés seront automatiquement équipés et ajoutés à l'inventaire du joueur (vous n'avez pas besoin d'ajouter de détection de collision supplémentaire pour que les personnages attrapent l'outil).

Comme mentionné dans la section ajouter des pièces/maillages, les pièces d'outil ne doivent souvent pas être Anchored, car les personnages joueurs resteront bloqués en place lorsqu'ils ramassent ou équipent un outil ancré. Cependant, si vous souhaitez ancrer un outil collectable à un endroit spécifique dans le monde 3D, tel qu'en flottant légèrement au-dessus du sol, vous pouvez ajouter le Script suivant à l'outil pour désancrer ses pièces lors de la collecte.

Désancrer l'outil lors de l'équipement/collecte

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)

Outil gagné/acheté

Si vous souhaitez définir des outils comme récompenses lorsque les joueurs accomplissent des tâches, ou offrir des outils à la vente dans un magasin en jeu, placez ces outils à l'intérieur de ReplicatedStorage. De là, vous pouvez Clone() un outil dans le Backpack du joueur au moment approprié.

Cloner l'outil dans l'inventaire du joueur

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- Créer un clone de l'outil
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local clone = tool:Clone()
clone.Parent = backpack -- Ajoute le clone dans le sac à dos du joueur
end

Implémenter des effets d'outil

Après avoir ajouté des outils à votre jeu, vous pouvez implémenter des scripts pour permettre aux joueurs d'utiliser leurs outils et d'effectuer les actions souhaitées. Les événements spécifiques à l'outil suivants indiquent l'état de l'outil et l'entrée du joueur avec celui-ci.

  • Equipped() — S'active lorsque le joueur sélectionne l'outil dans son sac à dos.
  • Unequipped() — S'active lorsque le joueur change d'outils ou lâche l'outil.
  • Activated() — S'active lorsque le joueur commence à activer l'outil (clique, tape ou appuie sur la gâchette arrière droite d'une manette).
  • Deactivated() — S'active lorsque le joueur arrête l'entrée d'activation (relâche le bouton ou le toucher).
Template d'événements d'outil

local tool = script.Parent
local function onEquip()
print(tool.Name, "outil équipé")
end
local function onUnequip()
print(tool.Name, "outil déséquipé")
end
local function onActivate()
print(tool.Name, "outil activé")
end
local function onDeactivate()
print(tool.Name, "outil désactivé")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)

Les événements d'outil ne se déclenchent que dans LocalScripts côté client car seul l'appareil du joueur sait quand se produit une entrée. En conséquence, la plupart des outils nécessitent à la fois un LocalScript et un Script côté serveur où chacun gère certains aspects du comportement de l'outil et un RemoteEvent transmet les informations du client au serveur (voir événements distants et rappels pour plus d'informations).

Voici des exemples d'outils et de leurs comportements gérés par un LocalScript ou un Script :

OutilLocalScriptScript
Baguette du CréateurDétecte où le joueur active l'outil (Activated()).Crée une nouvelle pièce à l'emplacement dans le monde 3D où le joueur a touché ou cliqué.
Cape d'InvisibilitéDétecte lorsque le joueur équipe l'outil (Equipped()) ou déséquipe l'outil (Unequipped()).Rend le joueur invisible pour tous les autres joueurs tant que la cape est équipée et restaure le joueur à pleine visibilité lorsque la cape est déséquipée.
Méga-ArcDétecte combien de temps le joueur active l'outil (temps entre Activated() et Deactivated()).Tire une flèche magique avec une puissance plus ou moins grande, selon le temps d'activation détecté.
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.