Tool
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Les outils sont des objets que l'objet Humanoid peut équiper.Pour les joueurs, ils sont stockés dans un objet Backpack parenté d'un objet Player.En jeu, les joueurs peuvent avoir plusieurs outils qui apparaissent comme des icônes en bas de l'écran.L'équipement d'un outil le déplace du sac à dos dans un modèle Player.Character dans le Workspace.Par défaut, les outils sont tenus dans la main droite et ont une poignée en eux, ce qui est un Part nommé "poignée" à l'intérieur (bien que l'un ne soit pas requis si Tool.RequiresHandle est off).Les outils qui doivent être fournis aux joueurs de réapparition devraient être stockés dans le StarterPack .
Sur le bureau, en appuyant sur une touche numérique (1, 2, 3...) équipera un outil.Les outils équipés peuvent être déposés dans l'espace de travail en appuyant sur Retour arrière.Il est recommandé de désactiver Tool.CanBeDropped pour qu'il ne soit pas possible de lâcher un outil, de mourir, de réapparaître et de lâcher à nouveau pour dupliquer gamepadoutils.Sur les manettes, les boutons LB et RB équiperont les outils.Vous pouvez désactiver l'activation via un clic gauche (ou un déclencheur droit sur une manette) en définissant Tool.ManualActivationOnly sur.Pour ce faire, vous devez appeler Activer vous-même à travers une sorte d'autre entrée de l'utilisateur.
Les outils ne sont pas la seule façon de capturer l'entrée de l'utilisateur.Vous pouvez également utiliser ContextActionService , UserInputService ou Player:GetMouse() .Si vous avez besoin d'un outil pour avoir plusieurs actions, comme appuyer sur une touche lorsque l'outil est équipé, vous devriez utiliser ContextActionService's BindAction et UnbindAction dans les événements Equipped et Unequipped, respectivement.Utilisez un LocalScript envoyer ces actions au serveur via un RemoteFunction à l'intérieur de l'outil.
Échantillons de code
This code is meant to be placed in a Script within a Tool. It allows a player to spawn explosions by equipping the tool and clicking on the ground. It does so by defining a function, explode, which creates a non-deadly explosion at a given point. Then, it defines a function, onActivated, that runs when the tool is activated. Finally, it connects the Activated event of the tool to the onActivated function.
To test this code out, try creating a Tool and put a Part inside it. Name the Part "Handle". Put a Script inside the Tool next, and paste the code into it. Finally, put the Tool in the StarterPack.
local tool = script.Parent
local function explode(point)
local e = Instance.new("Explosion")
e.DestroyJointRadiusPercent = 0 -- Make the explosion non-deadly
e.Position = point
e.Parent = workspace
end
local function onActivated()
-- Get the Humanoid that Activated the tool
local human = tool.Parent.Humanoid
-- Call explode with the current point the Humanoid is targetting
explode(human.TargetPoint)
end
tool.Activated:Connect(onActivated)
This code sample is for a Tool object with a Part named Handle. It detects when Humanoids other than the current holder hit the handle, and deals some damage to them. In addition, when the Tool is activated, it triggers a slash animation in the default character animation scripts. Try out this script by creating a Tool object in the StarterPack. Put a Part inside it, and name it Handle. Paste this code into a Script inside the Tool, then try slashing at another Humanoid!
local tool = script.Parent
local function onTouch(partOther)
-- First, try to see if the part we touched was part of a Humanoid
local humanOther = partOther.Parent:FindFirstChild("Humanoid")
-- Ignore touches by non-humanoids
if not humanOther then
return
end
-- Ignore touches by the Humanoid carrying the sword
if humanOther.Parent == tool.Parent then
return
end
humanOther:TakeDamage(5)
end
-- Trigger a slash animation
local function slash()
-- Default character scripts will listen for a "toolanim" StringValue
local value = Instance.new("StringValue")
value.Name = "toolanim"
value.Value = "Slash" -- try also: Lunge
value.Parent = tool
end
tool.Activated:Connect(slash)
tool.Handle.Touched:Connect(onTouch)
Résumé
Propriétés
Contrôle si le joueur peut laisser tomber l'outil.
Relève de savoir si l'outil peut ou non être utilisé.
Stocke les propriétés de « prise » de l'outil comme une seule CFrame.
Représente les valeurs R02, R12 et R22 de la matrice de rotation de la poignée CFrame.
L'écartement positionnel de la matrice de soudure de l'outil.
Représente les valeurs R00, R10 et R20 de la matrice de rotation de la poignée CFrame.
Représente les valeurs R01, R11 et R21 de la matrice de rotation de la poignée CFrame.
La propriété ManualActivationOnly contrôle si la Tool peut être activée sans exécuter Tool:Activate().
Détermine si une fonction Tool sans poignée est définie.
Contrôle le message affiché lorsque la souris du joueur survole l'outil dans son sac à dos.
L'icône de texture qui s'affiche pour un outil dans le sac à dos du joueur.
Définit le niveau de détail sur le modèle pour les expériences avec streaming d'instance activé.
Contrôle le comportement de streaming du modèle sur Models lorsque le streaming d'instance est activé.
La partie principale de la Model ou nil si elle n'est pas explicitement configurer.
Propriété réservée aux éditeurs utilisée pour dimensionner le modèle autour de son pivot. Le réglage de cette propriété déplacera la mesure comme si Model/ScaleTo était appelé sur elle.
Détermine où se trouve le pivot d'un Model qui ne fait pas **** avoir un ensemble Model.PrimaryPart.
Méthodes
Méthodes hérités de ModelDéfinit ce modèle pour être persistant pour le joueur spécifié.Model.ModelStreamingMode doit être défini sur PersistantParJoueur pour que le comportement soit modifié en raison de l'ajout.
Renvoie une description d'un volume qui contient toutes les parties d'un modèle.
Renvoie la taille de la plus petite boîte de bordure qui contient tout le BaseParts dans le Model, alignée sur le Model.PrimaryPart si elle est configurer.
Renvoie tous les objets Player que cet objet de modèle est persistant pour.Le comportement varie en fonction de si cette méthode est appelée à partir d'un Script ou d'un LocalScript .
Renvoie la taille canonique du modèlisation, qui est par défaut de 1 pour les modèles créés récemment et qui changera lorsqu'elle sera mise à l'échelle via Model/ScaleTo.
Déplace le PrimaryPart à la position donnée. Si aucune partie principale n'a été spécifiée, la partie racine du modèle sera utilisée.
Rend ce modèle non persistant pour le joueur spécifié.Model.ModelStreamingMode doit être défini sur PersistantParJoueur pour que le comportement soit modifié en raison de la suppression.
Définit le facteur d'échelle du modèlisation, ajustant la taille et l'emplacement de toutes les instances descendantes afin qu'elles aient ce facteur d'échelle par rapport à leurs tailles et emplacements initiaux lorsque le facteur d'échelle était de 1.
Déplace un Model par le décentragedonné Vector3, en conservant l'orientation du modèlisation.Si un autre BasePart ou Terrain existe déjà à la nouvelle position, alors le Model couvrira cet objet.
Obtient le pivot d'un PVInstance .
Transforme le PVInstance ainsi que tous ses descendants PVInstances de sorte que le pivot est désormais situé au point spécifié CFrame.
Évènements
Se déclenche lorsque le joueur clique alors que l'outil est équipé.
Se déclenche lorsque le joueur relâche son clic alors que l'outil est équipé et activé.
Se déclenche lorsque l'outil est équipé.
S'enflamme lorsque l'outil est déséquipé.
Propriétés
CanBeDropped
La propriété CanBeDropped contrôle si le joueur peut lâcher le Tool .
Si c'est vrai, lorsque le bouton retour arrière est pressé, l'outil sera associé à Workspace et retiré du joueur Backpack .Si c'est faux, rien ne se produira lorsque la touche retour arrière est pressée et l'outil restera équipé.
Enabled
La propriété Activée se rapporte à savoir si la Tool peut être utilisée ou non.Cela est utile si vous voulez empêcher un joueur d'utiliser un outil, mais que vous ne voulez pas le supprimer de leur Backpack .
Lorsqu'il est défini à true, le joueur peut utiliser l'outil.Lorsqu'il est défini à false , l'outil est désactivé et le joueur ne peut pas l'utiliser ; cela empêche l'outil d'être activé ou désactivé par les méthodes Tool:Activate() et Tool:Deactivate() et empêche les événements Tool.Activated et Tool.Deactivated de se déclencher.
Échantillons de code
The code sample below creates Tool in the local player's Backpack that increases their JumpPower from 50 to 150 for 5 seconds.
This example uses the tool's Tool.Enabled property as a debounce by setting the property to true when the player jumps and back to false after the 5 second duration.
Unequipping the tool also stops the player from super jumping by changing the JumpPower back to 50.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local tool = Instance.new("Tool")
tool.Name = "SuperJump"
tool.RequiresHandle = false
tool.Parent = player.Backpack
function toolActivated()
humanoid.JumpPower = 150
tool.Enabled = false
task.wait(5)
tool.Enabled = true
humanoid.JumpPower = 50
end
tool.Activated:Connect(toolActivated)
tool.Unequipped:Connect(function()
humanoid.JumpPower = 50
end)
Grip
La propriété Grip stocke les propriétés "poignée" de l'outil en tant que seule propriété CFrame.Ces propriétés définissent la position des mains du joueur pour tenir l'outil et incluent GripUp , GripRight , GripForward et GripPos .
Échantillons de code
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripForward
Une des propriétés qui spécifie l'orientation d'un outil dans la main d'un personnage.Cela représente les valeurs R02, R12 et R22 de la matrice de rotation de la poignée CFrame.
D'autres propriétés d'outil qui contrôlent la façon dont un personnage tient un outil incluent Tool.GripUp , Tool.GripRight et Tool.GripPos .Toutes ces propriétés sont stockées dans une seule propriété CFrame dans la propriété Tool.Grip.
Échantillons de code
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripPos
Cette propriété contrôle le décalage positionnel de la matrice de soudure de l'outil.C'est l'une des plusieurs propriétés utilisées pour déterminer comment le personnage du joueur tient l'outil.
D'autres propriétés qui contrôlent la façon dont un personnage tient un outil incluent Tool.GripUp , Tool.GripRight et Tool.GripForward .Toutes ces propriétés sont stockées dans une seule propriété CFrame dans la propriété Tool.Grip.
Échantillons de code
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripRight
Une des propriétés qui spécifie l'orientation d'un outil dans la main d'un personnage.Cela représente les valeurs R00, R10 et R20 de la matrice de rotation de la poignée CFrame.
D'autres propriétés d'outil qui contrôlent la façon dont un personnage tient un outil incluent Tool.GripUp , Tool.GripForward et Tool.GripPos .Toutes ces propriétés sont stockées dans une seule propriété CFrame dans la propriété Tool.Grip.
Échantillons de code
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
GripUp
Une des propriétés qui spécifie l'orientation d'un outil dans la main d'un personnage.Cela représente les valeurs R01, R11 et R21 de la matrice de rotation de la poignée CFrame.
D'autres propriétés d'outil qui contrôlent la façon dont un personnage tient un outil incluent Tool.GripRight , Tool.GripForward et Tool.GripPos .Toutes ces propriétés sont stockées dans une seule propriété CFrame dans la propriété Tool.Grip.
Échantillons de code
The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)
ManualActivationOnly
La propriété ManualActivationOnly contrôle si la Tool peut être activée sans exécuter explicitement Tool:Activate() dans un script.
Lorsqu'il est réglé sur vrai, l'outil ne tirera que Tool.Activated lorsque Tool:Activate() sera appelé. Cela supprime également la fonction ContextActionService:BindActivate().
Lorsqu'il est défini sur false, les clics de souris ( lorsque l'outil est équipé ) vont également déclencher Tool.Activated .
Échantillons de code
The code sample below creates Tool in the local player's Backpack that increases their WalkSpeed from 16 to 30 for 5 seconds.
This example uses the tool's Tool.ManualActivationOnly property as a debounce by setting the property to true when the player begins sprinting and to false when the player stops sprinting. As a result, when the player is sprinting, the tool cannot be re-activated.
Unequipping the tool also stops the player from sprinting by changing the WalkSpeed to 16.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local tool = Instance.new("Tool")
tool.Name = "Sprint"
tool.RequiresHandle = false
tool.Parent = player:WaitForChild("Backpack")
function toolActivated()
humanoid.WalkSpeed = 30
tool.ManualActivationOnly = true
task.wait(5)
tool.ManualActivationOnly = false
humanoid.WalkSpeed = 16
end
tool.Activated:Connect(toolActivated)
tool.Unequipped:Connect(function()
humanoid.WalkSpeed = 16
end)
RequiresHandle
Cette propriété détermine si une fonction Tool sans poignée est contrôleur.
Un outil a une poignée lorsqu'il contient une partie enfante nommée poignée .Les outils avec poignées nécessitent généralement que le joueur les équipe pour qu'ils tiennent un objet pour les utiliser, par exemple des armes.Les outils sans poignées n'ont généralement pas besoin que le joueur les équipe pour les tenir pour les utiliser, par exemple des outils "voler" ou "invoquer".
Lorsqu'il est défini à true, l'outil fonctionnera uniquement avec une contrôleur. Lorsqu'il est défini à false, l'outil fonctionnera même sans contrôleur.
ToolTip
La propriété ToolTip contrôle le message qui sera affiché lorsque le joueur passe sa souris sur le dans son .
En général, la valeur de cette propriété doit décrire ce que l'outil est ou son utilisation.Par instance, pour un outil de pelle, vous pouvez choisir de définir la pointe d'outil à :
tool.ToolTip = "Shovel"
or
tool.ToolTip = "Use to dig"
or
tool.ToolTip = "Shovel - Use to dig"
Méthodes
Activate
Cette fonction simule l'activation du Tool . L'outil doit être équipé pour que cette fonction fonctionne.
Retours
Échantillons de code
The code below creates a Tool in the local player's Backpack that turns the player invisible when activated and visible when deactivated.
When equipped, the script simulates the tool being activated and turns the player invisible for 3 seconds and then simulates the tool being deactivated. Holding the left mouse button down turns the player invisible for up to 3 seconds, with a cooldown period of 1 second, or until the player releases their left mouse button.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Invisibility Tool"
tool.RequiresHandle = false
tool.Parent = player.Backpack
local invisible = false
local function toolActivated()
if invisible then
return
end
invisible = true
for _, bodypart in pairs(character:GetChildren()) do
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 1
end
end
task.wait(3)
tool:Deactivate()
task.wait(1)
invisible = false
end
local function toolDeactivated()
if not invisible then
return
end
for _, bodypart in pairs(character:GetChildren()) do
if bodypart.Name ~= "HumanoidRootPart" then
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 0
end
end
end
end
local function toolEquipped()
tool:Activate()
end
tool.Equipped:Connect(toolEquipped)
tool.Activated:Connect(toolActivated)
tool.Deactivated:Connect(toolDeactivated)
tool.Unequipped:Connect(toolDeactivated)
Deactivate
Cette fonction simule la désactivation du Tool . L'outil doit être équipé pour que cette fonction fonctionne.
Retours
Échantillons de code
The code below creates a Tool in the local player's Backpack that turns the player invisible when activated and visible when deactivated.
When equipped, the script simulates the tool being activated and turns the player invisible for 3 seconds and then simulates the tool being deactivated. Holding the left mouse button down turns the player invisible for up to 3 seconds, with a cooldown period of 1 second, or until the player releases their left mouse button.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Invisibility Tool"
tool.RequiresHandle = false
tool.Parent = player.Backpack
local invisible = false
local function toolActivated()
if invisible then
return
end
invisible = true
for _, bodypart in pairs(character:GetChildren()) do
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 1
end
end
task.wait(3)
tool:Deactivate()
task.wait(1)
invisible = false
end
local function toolDeactivated()
if not invisible then
return
end
for _, bodypart in pairs(character:GetChildren()) do
if bodypart.Name ~= "HumanoidRootPart" then
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 0
end
end
end
end
local function toolEquipped()
tool:Activate()
end
tool.Equipped:Connect(toolEquipped)
tool.Activated:Connect(toolActivated)
tool.Deactivated:Connect(toolDeactivated)
tool.Unequipped:Connect(toolDeactivated)
Évènements
Activated
Cet événement se déclenche lorsque le joueur clique alors que le Tool est équipé.Il est pas tiré si la touche Ctrl est pressée pendant le cliquer.
Cet événement est généralement utilisé pour effectuer une action lorsque le joueur utilise l'outil, par exemple pour lancer une fusée à partir d'un outil de lance-roquettes.
Le code ci-dessous, lorsqu'il est placé dans un LocalScript, crée un outil dans le joueur local Backpack et imprime « Outil activé » lorsque le joueur clique alors que l'outil créé est équipé.
local Players = game:GetService("Players")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = Players.LocalPlayer.Backpack
function onActivation()
print("Tool activated")
end
tool.Activated:Connect(onActivation)
Deactivated
Cet événement se déclenche lorsque le joueur libère son clic alors que le Tool est équipé et activé.Il est généralement utilisé pour effectuer une action lorsque le joueur arrête d'utiliser un outil.
Le code ci-dessous, lorsqu'il est placé dans un LocalScript, crée un outil dans le player local de Backpack et imprime « Outil désactivé » lorsque le joueur libère leur clic alors que l'outil est équipé et activé.
local Players = game:GetService("Players")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = Players.LocalPlayer.Backpack
function toolDeactivated()
print("Tool deactivated")
end
tool.Deactivated:Connect(toolDeactivated)
Equipped
Cet événement se déclenche lorsqu'un joueur équipe le Tool (le sort de son Backpack ).
L'inverse de cet événement, Tool.Unequipped, peut être utilisé pour déterminer quand le joueur déséquipe l'outil en le mettant dans son sac à dos.
Notez que cet événement ne fait pas pas de feu lorsque Tool.RequiresHandle est activé et qu'aucune poignée n'est présente.
Paramètres
La souris du joueur.
Échantillons de code
The example shown below will print "A tool was equipped" each time the tool is equipped by the player. Please note that the below example assumes that you've already defined what "Tool" is.
local Tool = script.Parent
local function onEquipped(_mouse)
print("The tool was equipped")
end
Tool.Equipped:Connect(onEquipped)
Unequipped
Cet événement se déclenche lorsqu'un joueur déséquipe le Tool (le met dans son Backpack).
L'inverse de cet événement, Tool.Equipped, peut être utilisé pour déterminer quand le joueur équipe l'outil en le sortant de son sac à dos.
Notez que cet événement ne fait pas pas de feu lorsque Tool.RequiresHandle est activé et qu'aucune poignée n'est présente.