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 lors des sessions, tels que des armes, des baguettes magiques, des lampes de poche, des clés, et 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, donc vous devrez en créer un. Il est plus facile de prévisualiser à quoi ressemble 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'Explorateur, 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 Propriétés et personnalisez l'apparence de l'outil dans l'inventaire du joueur :

    • TextureId — Spécifie l'ID de l'image d'actif 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/maillages pour composer son apparence dans le monde 3D. Vous devrez également inclure une poignée que les personnages des joueurs saisissent.

Ajouter des pièces/maillages

Les outils en jeu peuvent consister en 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 RightHand partie du corps du modèle du personnage (R15) ou à la partie Right Arm (R6).

Si l'outil est composé d'un seul MeshPart, nommez simplement cette partie Handle. Sinon, vous pouvez inclure une partie séparée nommée Handle comme enfant direct du parent Tool et ensuite 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 qui pend de 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.

Puisque 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 ait l'air correcte. L'exemple suivant montre des réglages Grip incorrects et corrects pour la lanterne suspendue :

Lanterne traînant au sol avec Grip.Position de (0, -2, 0) et Grip.Orientation de (-90, 0, 0)
Lanterne 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, donc vous devriez 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 devrez le placer dans la zone correcte de la hiérarchie de l'Explorateur. 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 d'inventaire ou en appuyant sur la touche de raccourci associée comme 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 re-parent à 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
-- Re-parenter 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 souhaitez 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 saisissent l'outil).

Comme mentionné dans la section ajouter des pièces/maillages, les pièces d'outil ne doivent généralement pas être Anchored, car les personnages des 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, comme 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 proposer 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 au sac à dos du joueur
end

Implémenter les effets des outils

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 aux outils suivants indiquent l'état de l'outil et l'entrée du joueur avec celui-ci.

  • Equipped() — Se déclenche lorsque le joueur sélectionne l'outil dans son sac à dos.
  • Unequipped() — Se déclenche lorsque le joueur change d'outils ou lâche l'outil.
  • Activated() — Se déclenche lorsque le joueur commence à activer l'outil (clique, touche ou appuie sur la gâchette arrière droite d'une manette).
  • Deactivated() — Se déclenche lorsque le joueur arrête l'entrée d'activation (relâche le bouton ou le toucher).
Template des é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 les LocalScripts côté client car seul l'appareil du joueur sait quand l'entrée se produit. 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 des 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 soit par un LocalScript, soit par 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 quand le joueur équipe l'outil (Equipped()) ou déséquipe l'outil (Unequipped()).Rend le joueur invisible à tous les autres joueurs pendant que la cape est équipée et restaure la visibilité complète du joueur 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 plus ou moins de puissance, 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.