Tool
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
เครื่องมือเป็นวัตถุที่ Humanoid วั
เดสก์ท็อป, การกดตัวอักษรเลข (เช่น 1, 2, 3...) จ
อุปกรณ์เสริมไม่ใช่วิธีเดียวในการจับการป้อนข้อมูลของผู้ใช้ คุณยังสาม
ตัวอย่างโค้ด
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)
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)
สรุป
คุณสมบัติ
ควบคุมว่าผู้เล่นสามารถทิ้งเครื่องมือได้หรือไม่
เกี่ยวกับว่าเครื่องมือนี้สามารถใช้หรือไม่
เก็บรวบรวมคุณสมบัติ "grip" ของเครื่องมือเป็นหนึ่ง CFrame
ระบุค่า R02 ، R12 และ R22 ของค่าด้ามจับ 1> Datatype.CFrame1> ระบบหมุน
ค่าเครื่องมือที่ติดตั้ง
ระบุค่า R00 ، R10 และ R20 ของค่าด้ามจับ 1> Datatype.CFrame1> ระบบหมุน
ระบุค่า R01 ، R11 และ R21 ของค่าด้ามจับ 1> Datatype.CFrame1> ระบบหมุน
คุณสมบัติ ManualActivationOnly ควบคุมว่า Tool สามารถเปิดใช้งานได้โดยไม่ต้องเรียกใช้ Tool:Activate()
กำหนดว่า Tool ฟังก์ชันโดยไม่ต้องมีมือจับ
ควบคุมข้อความที่ปรากฏเมื่อเมาส์ของผู้เล่นวางบนเครื่องมือในกระเป๋าของพวกเขา
ไอคอนเนื้อหาที่ปรากฏสำหรับเครื่องมือในกระเป๋าของผู้เล่น
ตั้งค่าระดับรายละเอียดในแบบจำลองสำหรับประสบการณ์ที่มีการเปิดใช้งานการสตรีมมิ่งด้วยตัวอย่าง
ควบคุมพฤติกรรมการสตรีมโมเดลบน Models เมื่อการสตรีมเครื่องมือเปิดใช้งาน
ส่วนหลักของ Model หรือ nil ถ้าไม่ได้ตั้งค่าไว้อย่างชัดเจน
สมบัติสินค้าเฉพาะที่ใช้เพื่อปรับแต่งรุ่นรอบ ๆ แกนของมัน การตั้งค่าคุณสมบัตินี้จะย้ายความเคลื่อนไหวของเครื่องชั่งเมื่อ Model/ScaleTo ถูกเรียกบนมัน
กำหนดตำแหน่งที่โค้งของ Model ซึ่ง ไม่ มีชุด Model.PrimaryPart ตั้งอยู่
วิธีการ
วิธีการรับทอดมาจากModelตั้งค่ารุ่นนี้ให้เป็นรุ่นที่แข็งแกร่งสำหรับผู้เล่นที่กำหนด Model.ModelStreamingMode ต้องถูกตั้งไว้ให้เป็น PersistentPerPlayer เพื่อให้การเปลี่ยนแปลงพฤติกรรมเป็นผลมาจากการเพิ่ม
รวมถึงคำอธิบายของระดับที่มีทุกส่วนของแบบ
กลับขนาดของกล่องชุดที่เล็กที่สุดที่มี BaseParts ใน Model ที่ตรงกับ Model.PrimaryPart ตั้งค่า
กลับสิ่งที่เป็น Player วัตถุทั้งหมดที่วัตถุนี้มีความยืนยันสำหรับ การเรียกคืนของวิธีนี้จาก Script หรือ LocalScript ต่างกันไปตามว่าวิธีนี้เรียกได้จาก
กลับขนาดเครื่องชี้วัดที่กำหนดไว้ของแบบจำลองซึ่งเริ่มต้นด้วย 1 สำหรับแบบจำลองที่สร้างขึ้นใหม่และจะเปลี่ยนแปลงเมื่อมันถูกเคลื่อนผ่านโดย Model/ScaleTo
ย้าย PrimaryPart ไปยังตำแหน่งที่กำหนด หากไม่มีส่วนหลักได้ระบุไว้ จะใช้ส่วนหลักของแบบจำลอง
ทำให้รุ่นนี้ไม่มีอยู่ต่อไปสำหรับผู้เล่นที่กำหนด Model.ModelStreamingMode ต้องการตั้งค่าให้เป็น PersistentPerPlayer เพื่อให้พฤติกรรมเปลี่ยนแปลงเป็นผลมาจากการลบ
ตั้งค่าตัวปรับขนาดของแบบจำลองโดยปรับขนาดและตำแหน่งของบรรพบุรุษทั้งหมดให้มีตัวปรับขนาดของแบบจำลองที่สมเหตุสมผลเมื่อตัวปรับขนาดอยู่ที่ 1
เปลี่ยน Model โดยใช้การเคลื่อนที่ Vector3 ที่กำหนดไว้ เพื่อเก็บความตรงของโมเดล หาก BasePart หรือ 1> Class.Terrain1> ม
รับ pivot ของ Class.PVInstance
แปลง PVInstance พร้อมกับบรรพบุรุษทั้งหมดของมัน PVInstances เพื่อให้ pivot ตอนนี้อยู่ที่ CFrame ที่กำหนด
อีเวนต์
เกิดขึ้นเมื่อผู้เล่นคลิกขณะที่เครื่องมือติดตั้งอยู่
เกิดขึ้นเมื่อผู้เล่นปล่อยคลิกขณะที่เครื่องมือติดตั้งและเปิดใช้งาน
เปิดใช้งานเมื่อมีเครื่องมือ
เกิดขึ้นเมื่อเครื่องมือถูกถอดออก
คุณสมบัติ
CanBeDropped
สมบัติลักษณะ CanBeDropped ควบคุมว่าผู้เล่นสามารถดรอป Tool หรือไม่
ถ้าใช่เมื่อกดปุ่ม Backspace จะเป็นลูกโดยตรงของเครื่องมือไปยัง Workspace และจะถูกลบออกจากผู้เล่น Backpack หากเป็นเช่นนั้นจะไม่มีอะไรเกิดขึ้นเมื่อกดปุ่ม Backspace และเครื่อง
Enabled
สมบัติ เปิดใช้งาน ระบุว่า Tool สามารถใช้งานได้หรือไม่ สิ่งนี้มีประโยชน์หากคุณต้องการป้องกันผู้เล่นจากการใช้เครื่องมือ แต่ไม่ต้องการลบออกจาก
เมื่อตั้งค่าไว้ที่ true ผู้เล่นสามารถใช้เครื่องมือได้ เมื่อตั้งค่าไว้ที่ false เครื่
ตัวอย่างโค้ด
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 ระบุสมบัติของเครื่องมือ "grip" เป็นเครื่องมือเดียว CFrame สถานท
ตัวอย่างโค้ด
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
หนึ่งในสมบัติของโครงสร้างที่ระบุตำแหน่งของเครื่องมือในมือของตัวละคร นี่คือค่า R02 ของการหมุนมังก์ R12 และ R22 ของมังก์การหมุนม
คุณสมบัติอื่น ๆ ที่ควบคุมวิธีการที่ตัวละครกรรมสิทธิ์เครื่องมือในขณะที่ใช้งานรวมถึง Tool.GripUp , Tool.GripRight และ
ตัวอย่างโค้ด
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.GripRight และ Tool.GripForward ทั้งหม
ตัวอย่างโค้ด
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
หนึ่งในสมบัติของโครงสร้างที่ระบุตำแหน่งของเครื่องมือในมือของตัวละคร นี่คือค่า R00 ของการหมุนมังก์ R10 และ R20 ของมังก์การหมุ
คุณสมบัติอื่น ๆ ที่ควบคุมวิธีการที่ตัวละครกรรมสิทธิ์เครื่องมือในขณะนี้มี Tool.GripUp , Tool.GripForward และ Class.Tool.Grip
ตัวอย่างโค้ด
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
หนึ่งในสมบัติของโครงสร้างที่ระบุตำแหน่งของเครื่องมือในมือของตัวละคร นี่คือค่า R01 ของการหมุนมังก์ R11 และ R21 ของมังก์การหมุนม
คุณสมบัติอื่น ๆ ที่ควบคุมวิธีการที่ตัวละครกรรมสิทธิ์เครื่องมือในขณะที่ใช้งานรวมถึง Tool.GripRight , Tool.GripForward และ
ตัวอย่างโค้ด
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() ในสคริปต์
เมื่อตั้งค่าเป็น true เครื่องมือจะเพิ่งเปิดใช้งาน Tool.Activated เมื่อ Tool:Activate() ถูกเรียก นี่ยังเป็นการปิดการใช้งานฟังก์ชัน ContextActionService:BindActivate() ด้วย
เมื่อตั้งค่าเป็น false การคลิกเมาส์ (เมื่อเครื่องมือถูกติดตั้ง) จะยิง Tool.Activated ด้วย
ตัวอย่างโค้ด
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
สมบัตินี้กำหนดว่า Tool ฟังก์ชันโดยไม่มีจุดหมุน
เครื่องมือมีจุดมุ่งหมายเมื่อมันมีส่วนลูกชิ้นที่มีชื่อว่า จับเอาด้วย เครื่องมือที่มีจุดมุ่งหมายต้องการให้ผู้เล่นใส่ให้พร้อมกับวัตถุเพื่อให้พวกเขาใช้งาน
เมื่อตั้งค่าไว้ที่ true เครื่องมือจะทำงานได้เฉพาะกับจุดมุ่งหมาย เมื่อตั้งค่าไว้ที่ false เครื่องมือจะทำงานได้แม้ไม่มีจุดมุ่งหมาย
ToolTip
สมบัติความรู้นี้ควบคุมข้อความที่จะปรากฏเมื่อผู้เล่นวางเมาส์ไว้บน Mouse ใน Tool ของพวกเขา
โดยทั่วไป, ค่านี้ควรอธิบายว่าเครื่องมือนี้คืออะไรหรือการใช้งานของมัน เช่น, สำหรับเครื่องมือช้อน, คุณอาจเลือกที่จุดมุ่งหมายเป็น:
tool.ToolTip = "Shovel"
หรือ
tool.ToolTip = "Use to dig"
หรือ
tool.ToolTip = "Shovel - Use to dig"
วิธีการ
Activate
ฟังก์ชันนี้จะจำลองการเปิดใช้งานของ 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
ฟังก์ชันนี้จะจำลองการปิดใช้งานของ 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 ถูกกดระหว่างการคลิก
เหตุการณ์นี้มักใช้เพื่อประกอบการที่ผู้เล่นใช้เครื่องมือนี้เช่นเปิดจรวดจากเครื่องมือปืนจรวด
รหัสด้านล่าง, เมื่อวางใน LocalScript สร้างเครื่องมือใน Backpack ของผู้เล่นและพิมพ์ "Tool activated" เมื่อผู้เล่นคลิกในขณะที่เครื่องมือที่สร้างขึ้นกำลังติดตั้งอยู่
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 ของผู้เล่นและพิมพ์ "Tool deactivated" เมื่อผู้เล่นปล่อยการคลิกขณะที่เครื่องมือติดตั้งและเปิดใช้งาน
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 (เอาออกจาก Class.Backpack ของพวกเขา)
สิ่งที่ตรงกันข้ามกับเหตุการณ์นี้, Tool.Unequipped สามารถใช้เพื่อระบุเมื่อผู้เล่นถอดอุปกรณ์ออกจากกระเป๋าของพวกเขา
หมายเหตุว่าเหตุการณ์นี้ไม่ได้เกิดขึ้นเมื่อ Class.Tool.RequiresHandle เปิดใช้งานและไม่มีมือจับ
พารามิเตอร์
เมาส์ของผู้เล่น
ตัวอย่างโค้ด
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 เปิดใช้งานและไม่มีมือจับ