Tool

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

工具是一個 Backpack 對象可以裝備的工具。對於玩家來說,它們是存放在 Player 對象的父級,1> Class.Player

在桌面上按一個數字鍵(1、2、3...)將裝備一個工具。裝備的工具可以被放在工作區中,按下返回鍵(或右鍵在遊戲手柄上)即可放

工具不是唯一捕捉用戶輸入的方式。您也可以使用 ContextActionServiceUserInputService 中的 Class.

範例程式碼

Explode Tool Example

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)
Sword Tool Example

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)

概要

屬性

屬性 繼承自 BackpackItem
  • TextureId:ContentId
    平行讀取

    玩家背包中的工具所顯示的材質圖示。

屬性 繼承自 Model屬性 繼承自 PVInstance

方法

方法 繼承自 Model方法 繼承自 PVInstance

活動

屬性

CanBeDropped

平行讀取

CanBeDropped 屬性控制玩家是否能夠放下 Tool

如果是,當按下返回鍵時,工具將會親綱在 Workspace 並從玩家的 Backpack 中移除。如果是,在按下返回鍵時,工具將會裝備。

Enabled

平行讀取

啟用屬性 與否 關閉Tool 的使用。這有助於防止玩家使用工具,但不需要將其從他們的Backpack 移除。

當設為 true 時,玩家可以使用工具。當設為 false 時,工具將無法使用,因為它無法啟動或關閉 Tool:Activate() 和 2>Class.Tool:Deactivate2> 方法。這

範例程式碼

Superjump Tool

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

平行讀取

Grip 屬性存儲工具的「CFrame」屬性為單一的 GripUp 。這些屬性位置如何玩家持有工具並包括 1>Class

範例程式碼

Grip Stick

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

隱藏
未複製
平行讀取

一個特性,指定工具的方向在角色的手中。這代表 R02R12R22 值的握把旋轉矩陣。

控制角色持有工具的方式的其他工具屬性包括 Tool.GripUp , Tool.GripRightTool.GripPos . 所有這些屬性都存在在 1> Datatype.CFrame1> 中的單個 4> Class.Tool.Grip

範例程式碼

Grip Stick

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

隱藏
未複製
平行讀取

這個屬性控制工具的焊接矩陣的位置偏移。它是其中一些用於位置玩家角色持有工具的方法的幾個屬性之一。

控制角色如何持有工具的方式的其他屬性包括 Tool.GripUp , Tool.GripRightTool.GripForward 。這些屬性都存放在單個 1> Datatype.CFrame1> 在 4> Class.Tool.Grip4> ��

範例程式碼

Grip Stick

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

隱藏
未複製
平行讀取

一個特性,指定工具的方向在角色的手中。這代表 R00R10R20 值的握把旋轉矩陣。

控制角色持有工具的方式的其他工具屬性包括 Tool.GripUp , Tool.GripForwardTool.GripPos . 所有這些屬性都存在在 1> Datatype.CFrame1> 中的單個 4> Class.Tool.Grip

範例程式碼

Grip Stick

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

隱藏
未複製
平行讀取

一個特性,指定工具的方向在角色的手中。這代表 R01R11R21 值的握把旋轉矩陣。

控制角色持有工具的方式的其他工具屬性包括 Tool.GripRight , Tool.GripForwardTool.GripPos . 所有這些屬性都存在在 1> Datatype.CFrame1> 中的單個 4> Class.Tool.Grip

範例程式碼

Grip Stick

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

平行讀取

ManualActivationOnly 屬性控制是否需要在 Tool 可以啟動無需直接執行 Tool:Activate() 在指令碼中。

設為"真"時, 工具只會在 Tool.Activated 被呼叫時發射。這也會消除 Tool:Activate() 的功能。

設為 false 時,滑鼠點擊 (裝備工具時) 也會發射 Tool.Activated

範例程式碼

Sprint Tool

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

平行讀取

此屬性決定 whether a Tool 功能無處理手把。

當工具包含名為 Handle 的子零件時,工具會提供一個手柄。工具與手柄一般需要玩家裝備它們才能使用,例如武器。沒有手柄的工具通常不需要裝備玩家才能使用,例如 fly 或 summon 工具。

當設為 true 時,工具只能與手把子使用。當設為 false 時,工具可以使用無手把子。

ToolTip

平行讀取

The ToolTip 屬性控制玩家的 Mouse 將在他們的 Tool 上閃過時顯示的訊息。

一般來說,這個屬性的值應該說明工具是什麼或其使用方式。 例個體、實例,對於一個鏟子工具,您可以選擇將ToolTip設置為:


tool.ToolTip = "Shovel"


tool.ToolTip = "Use to dig"


tool.ToolTip = "Shovel - Use to dig"

方法

Activate

void

此功能模擬 Tool 的啟動。工具必須裝備才能啟動此功能。


返回

void

範例程式碼

Invisibility Tool

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

void

此功能模擬 Tool 的關閉。工具必須裝備才能啟動此功能。


返回

void

範例程式碼

Invisibility Tool

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)

活動

Activated

這個事件發生在玩家點擊時,Tool 正在裝備時。它不會發生在 Ctrl 鍵被按住期間,如果按下 Ctrl 鍵。

此事件通常用於執行玩家使用工具時的行動,例如從火箭發射器武器工具發射火箭。

下面的代碼,當放置在 LocalScript 中,會在本玩家的 Backpack 中創建一個工具,並且在玩家按一下時,工具會打印為 "已啟用"。


local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = game.Players.LocalPlayer.Backpack
function onActivation()
print("Tool activated")
end
tool.Activated:Connect(onActivation)

Deactivated

這個事件會在玩家釋放其按鈕時發生,而 Tool 裝備並啟用時。它通常用於在玩家停止使用工具時執行一個操作。

下面的代碼,當放置在 LocalScript 中,會在本玩家的 Backpack 中創建一個工具,並且在工具裝備和啟用時,會打印「工具已禁用」。


local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = game.Players.LocalPlayer.Backpack
function toolDeactivated()
print("Tool deactivated")
end
tool.Deactivated:Connect(toolDeactivated)

Equipped

這個事件會發生,當玩家裝備 Tool (從他們的 Backpack 中取出)。

這個事件的相反,Tool.Unequipped,可以用來決定玩家是否在背包中放置工具,以便決定他們是否要卸下工具。

注意,當 Class.Tool.RequiresHandle 啟用時,此事件不會發生 Tool.RequiresHandle 發生火災,但沒有處理器。

參數

mouse: Mouse

玩家的滑鼠。


範例程式碼

Print when a Player Equips a Tool

local Tool = script.Parent
local function onEquipped(_mouse)
print("The tool was equipped")
end
Tool.Equipped:Connect(onEquipped)

Unequipped

這個事件會發生,當玩家卸下 Tool (將它放進他們的 Backpack 裡)。

這個事件的相反, Tool.Equipped,可以用來決定玩家是否裝備工具,從背包中拿出工具。

注意,當 Class.Tool.RequiresHandle 啟用時,此事件不會發生 Tool.RequiresHandle 發生火災,但沒有處理器。