Animator
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
คลาสหลักที่รับผิดชอบการเล่นและการสําเนาของ Animationsการสําเนาทั้งหมดของการเล่น AnimationTracks จะจัดการผ่านตัวอย่าง Animator
ดูเพิ่มเติม เครื่องมือแก้ไขแอนิเมชัน และ การใช้แอนิเมชัน เพื่อเรียนรู้วิธีสร้างและเพิ่มแอนิเมชันที่สร้างไว้ล่วงหน้าหรือกำหนดเองให้กับเกมของคุณ
สรุป
คุณสมบัติ
วิธีการ
คำนวณความเร็วสัมพันธ์ระหว่างส่วนและใช้กับ Motor6D.Part1การคำนวณความเร็วสัมพันธ์และการจัดสรรเกิดขึ้นตามลำดับที่กำหนดไว้
ส่งคืนรายการของการเล่นปัจจุบัน AnimationTracks
โหลด Animation ลงบน Animator และส่งคืน AnimationTrack
เพิ่ม AnimationTrack.TimePosition ของการเล่นทั้งหมดที่โหลดลงบน AnimationTracks โดยใช้การชดเชยกับโมเดลที่เกี่ยวข้องกับ Animator ซึ่งใช้กับ Animatorสำหรับใช้ในแถบคําสั่งหรือโดยปลั๊กอินเท่านั้น
อีเวนต์
ไฟเมื่อนักแสดงเริ่มเล่นแทร็กแอนิเมชัน
คุณสมบัติ
วิธีการ
ApplyJointVelocities
เนื่องจากชุดปัจจุบันของ AnimationTracks กำลังเล่นและเวลาและความเร็วในการเล่นปัจจุบันของพวกเขา ให้คำนวณความเร็วระหว่างส่วนต่างๆ และนำไปใช้กับ Motor6D.Part1 (ส่วนที่ Animator พิจารณาว่าเป็นส่วน "ลูก")การคำนวณความเร็วสัมพันธ์และการจัดสรรเกิดขึ้นตามลำดับที่กำหนดไว้
วิธีนี้ไม่ใช้ความเร็วสำหรับข้อต่อที่กำหนดหากทั้งส่วนของข้อต่อเป็นส่วนหนึ่งของการประกอบเดียวกันในปัจจุบัน ตัวอย่างเช่น หากพวกเขายังคงเชื่อมต่อโดยตรงหรือโดยอ้อมโดยมอเตอร์หรือเชื่อมต่อโดยตรงหรือโดยอ้อมโดยเชื่อมต่อ
วิธีนี้ไม่ปิดกั้นหรือลบข้อต่อสำหรับคุณคุณต้องปิดใช้งานหรือลบช่องข้อต่อแข็งออกจากการประกอบก่อนที่จะเรียกใช้วิธีนี้
ที่กำหนด Motor6Ds ไม่จำเป็นต้องเป็นลูกหลานของ DataModelการลบข้อต่อออกจาก DataModel ก่อนที่จะเรียกวิธีนี้ได้รับการสนับสนุน
พารามิเตอร์
ส่งค่ากลับ
LoadAnimation
ฟังก์ชันนี้โหลด Animation ที่กำหนดไว้บนสิ่งนี้ Animator และส่งคืน AnimationTrack ที่เล่นได้เมื่อเรียกใน Animator ภายในโมเดลที่ลูกค้ามีสิทธิ์เป็นเจ้าของเครือข่าย ตัวอย่างเช่นตัวละครของผู้เล่นท้องถิ่นหรือจาก BasePart:SetNetworkOwner() ฟังก์ชันนี้ยังโหลดแอนิเมชั่นสำหรับเซิร์ฟเวอร์เช่นกัน
โปรดทราบว่า Animator จะต้องอยู่ใน Workspace ก่อนที่จะโทรไปที่ LoadAnimation() หรือจะไม่สามารถดึงบริการ AnimationClipProvider ได้และจะโยนข้อผิดพลาด
คุณควรใช้ฟังก์ชันนี้โดยตรงแทนฟังก์ชันที่มีชื่อคล้ายกัน Humanoid:LoadAnimation() และ AnimationController:LoadAnimation() ฟังก์ชันเหล่านี้เป็นโปรกซี่ที่ล้าสมัยของฟังก์ชันนี้ซึ่งยังสร้าง Animator หากไม่มีอยู่; สิ่งนี้อาจทําให้เกิดปัญหาการสําเนาหากคุณไม่ระวัง
โหลดแอนิเมชันบนไคลเอนต์หรือเซิร์ฟเวอร์
เพื่อให้ AnimationTracks สามารถสําเนาได้อย่างถูกต้อง ก็เป็นสิ่งสําคัญที่ต้องรู้ว่าควรโหลดเมื่อใดบนไคลเอนต์หรือบนเซิร์ฟเวอร์:
หาก Animator เป็นลูกหลานของ Humanoid หรือ AnimationController ในไคลเอนต์ของผู้เล่น Player.Character แอนิเมชั่นจะถูกส่งต่อไปยังเซิร์ฟเวอร์และไคลเอนต์อื่น
หาก ไม่ใช่ลูกหลานของตัวละครผู้เล่น แอนิเมชั่นจะต้องโหลดและเริ่มบนเซิร์ฟเวอร์เพื่อทำซ้ำ
วัตถุ Animator จะต้องถูกสร้างเป็นครั้งแรกบนเซิร์ฟเวอร์และถูกส่งต่อไปยังลูกค้าเพื่อให้การเลียนแบบแอนิเมชันทำงานได้ทั้งหมดหากสร้าง Animator ท้องถิ่นแล้ว AnimationTracks โหลดด้วยที่ Animator จะไม่สามารถเลียนแบบได้
พารามิเตอร์
ส่งค่ากลับ
StepAnimations
เพิ่ม AnimationTrack.TimePosition ของการเล่นทั้งหมดที่โหลดลงบน AnimationTracks โดยใช้การชดเชยกับโมเดลที่เกี่ยวข้องกับ Animator ซึ่งใช้กับ Animatorสำหรับใช้ในแถบคําสั่งหรือโดยปลั๊กอินเท่านั้น
พารามิเตอร์ deltaTime กำหนดจำนวนวินาทีที่จะเพิ่มขึ้นในความคืบหน้าของแอนิเมชั่นโดยปกติฟังก์ชันนี้จะถูกเรียกในลูปเพื่อดูตัวอย่างระยะเวลาของแอนิเมชั่น (ดูตัวอย่าง)
โปรดทราบว่าเมื่อแอนิเมชั่นหยุดเล่นแล้ว ข้อต่อของโมเดลจะต้องรีเซ็ตด้วยตนเองเพื่อตําแหน่งเดิม (ดูตัวอย่าง)
ฟังก์ชันนี้ใช้เพื่อจำลองการเล่นของ Animations เมื่อเกมไม่ได้ทำงานสิ่งนี้ช่วยให้สามารถดูตัวอย่างแอนิเมชั่นได้โดยไม่ต้องเผชิญกับผลกระทบของการเรียกใช้เกม เช่น การดําเนินการของสคริปต์หากฟังก์ชันถูกเรียกในขณะที่เกมกําลังดําเนินการหรือโดย Scripts หรือ LocalScripts จะส่งคืนข้อผิดพลาด
นักพัฒนาที่ออกแบบเอนิมอเรชันกำหนดเองของตนเองควรใช้ฟังก์ชันนี้เพื่อดูตัวอย่างแอนิเมชันเนื่องจากเป็นวิธีที่ช่วงเวลาการแสดงแอนิเมชันทางการของ Roblox Animation Editor ใช้
พารามิเตอร์
ปริมาณเวลาในการเล่นแอนิเมชั่นในวินาทีที่จะเพิ่มขึ้น
ส่งค่ากลับ
ตัวอย่างโค้ด
ตัวอย่างโค้ดนี้รวมถึงฟังก์ชันที่สามารถใช้เพื่อดูตัวอย่างแอนิเมชันบนโมเดลใน Roblox Studio โดยไม่จำเป็นต้องรันเกมมันใช้ฟังก์ชัน StepAnimations ของ Animator ซึ่งเป็นวิธีเดียวกับที่ Roblox Animation Editor อย่างเป็นทางการใช้
local RunService = game:GetService("RunService")
local function studioPreviewAnimation(model, animation)
-- ค้นหา AnimationController และ Animator
local animationController = model:FindFirstChildOfClass("Humanoid")
or model:FindFirstChildOfClass("AnimationController")
local animator = animationController and animationController:FindFirstChildOfClass("Animator")
if not animationController or not animator then
return
end
-- โหลดแอนิเมชันเพื่อสร้างแทร็กแอนิเมชัน
local track = animationController:LoadAnimation(animation)
track:Play()
-- ดูตัวอย่างแอนิเมชัน
local startTime = tick()
while (tick() - startTime) < track.Length do
local step = RunService.Heartbeat:wait()
animator:StepAnimations(step)
end
-- หยุดการเคลื่อนไหว
track:Stop(0)
animator:StepAnimations(0)
-- รีเซ็ตข้อต่อ
for _, descendant in pairs(model:GetDescendants()) do
if descendant:IsA("Motor6D") then
local joint = descendant
joint.CurrentAngle = 0
joint.Transform = CFrame.new()
end
end
end
local character = script.Parent
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://507765644"
studioPreviewAnimation(character, animation)
อีเวนต์
AnimationPlayed
ไฟสำหรับการเรียกทั้งหมด AnimationTrack:Play() บนแทร็กแอนิเมชันที่สร้างและเป็นเจ้าของโดยนักแอนิเมชัน