Animator
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
คลาสหลักที่รับผิดชอบการเล่นและการเลียนแบบของ Animations ทั้งหมด การเลียนแบบการเล่น AnimationTracks จะได้รับการจัดการผ่านตัวอินสแตนซ์ Animator
ดูเพิ่มเติม ตัวแก้ไขอนิเมชั่น และ การใช้อนิเมชั่น เพื่อเรียนรู้วิธีการสร้างและเพิ่มอนิเมชั่นล่วงหน้าหรือกําหนดเองในเกมของคุณ
สรุป
คุณสมบัติ
วิธีการ
คํานวณความเร็วสัมพันธ์ระหว่างชิ้นส่วนและประยุกต์ให้กับ Motor6D.Part1 หรือ ใช้ค่าความเร็วเหล่านี้และการจัดการในลำดับที่เรียบเรียง
กลับรายการเล่นปัจจุบัน AnimationTracks
โหลด Animation ลงใน Animator และกลับมาด้วย AnimationTrack
เพิ่ม AnimationTrack.TimePosition ของทั้งหมดที่เล่น AnimationTracks ที่โหลดไปยัง Animator โดยใช้ออฟเซ็ตไปยังโมเดลที่เกี่ยวข้องกับ 1> Class.Animator1>
อีเวนต์
เกิดขึ้นเมื่อผู้สร้างภาพเริ่มเล่น AnimationTrack
คุณสมบัติ
วิธีการ
ApplyJointVelocities
เนื่องจากชุดปัจจุบันของ AnimationTracks ที่เล่นอยู่และเวลาและความเร็วเล่นของพวกเขาคำนวณความเร็วสัมพันธ์ระหว่างชิ้นส่วนและประยุกต์ให้กับ Motor6D.Part1 (ส่ว
วิธีนี้ไม่ใช้ค่าความเร็วสำหรับข้อต่อร่วมที่มีส่วนที่เป็นส่วนหนึ่งของข้อต่ออยู่ในขั้นตอนการประกอบที่เกี่ยวข้องกันโดยตรงหรืออ้อม เช่น หากพวกเขายังคงเชื่อมต่อโดยตรงหรือโดยอ้อมกันโดยมอเตอร
วิธีนี้ไม่ได้ปิดหรือลบข้อต่อสำหรับคุณ คุณต้องปิดหรืออย่างอื่นลบข้อต่อที่แข็งขันจากการประกอบก่อนที่จะเรียกวิธีนี้
Motor6Ds ที่ให้ไม่จำเป็นต้องเป็นลูกหลานของ DataModel การลบข้อต่อจาก DataModel ก่อนที่จะเรียกวิธีนี้จะสนับสนุนได้
พารามิเตอร์
ส่งค่ากลับ
LoadAnimation
ฟังก์ชันนี้จะโหลด Animation ที่มอบให้ใน Animator นี้ โดยการนำเสนอ ผู้เล่นAnimationTrack คืนมา เมื่อเรียกใ
คุณควรใช้ฟังก์ชันนี้โดยตรงแทนที่จะใช้ Humanoid:LoadAnimation() และ AnimationController:LoadAnimation() ฟังก์ชันเหล่านี้เป็นตัวแทนเก่าของฟังก์ชันนี้ซึ่งยังสร้าง
การโหลดแอนิเมชันบนลูกค้าหรือเซิร์ฟเวอร์
เพื่อให้ AnimationTracks สามารถเลียนแบบได้อย่างถูกต้อง สิ่งสำคัญคือต้องรู้ว่าเมื่อใดที่พวกเขาควรโหลดบนเครื่องคอมพิวเตอร์หรือบนเซิร์ฟเวอร์:
หาก Animator เป็นลูกหลานของ Humanoid หรือ AnimationController ในลูกหลานของผู้เล่น 2> Class.Player.Character2> อนิเมชั่นจะเริ่มในลูกค้าของผู้เล่นนั้นจะถ
หาก Animator เป็นลูกหลานของตัวละครผู้เล่น การอนิเมชั่นของมันจะต้องโหลดและเริ่มในเซิร์ฟเวอร์เพื่อวาดเลียนแบบ
วัตถุ Animator จะต้องถูกสร้างให้เป็นครั้งแรกบนเซิร์ฟเวอร์และเคลื่อนย้ายไปยังลูกค้าเพื่อให้การเคลื่อนย้ายแอนิเมชันทำงานได้ หากวัตถ
พารามิเตอร์
Class.Animation ที่จะใช้
ส่งค่ากลับ
StepAnimations
เพิ่ม AnimationTrack.TimePosition ของทั้งหมดที่เล่น AnimationTracks ที่โหลดไปยัง Animator โดยใช้ออฟเซ็ตไปยังโมเดลที่เกี่ยวข้องกับ 1> Class.Animator1>
แอนิเมชันโดยปกติฟังก์ชันนี้จะถูกเรียกในล็อปเพื่อดูความยาวของอนิเมชัน (ดูตัวอย่าง)
หมายเหตุว่าเมื่ออนิเมชันหยุดเล่น ตำแหน่งของแม่พิมพ์จะต้องถูกรีเซ็ตด้วยมือ (ดูตัวอย่าง)
คุณสมบัตินี้ใช้เพื่อจำลองการเล่นของ Animations เมื่อเกมไม่ได้เรียกใช้งาน สิ่งนี้จะช่วยให้อนิเมชันสามารถดูตัวอย่างได้โด
ผู้ออกแบบแอนิเมชันเองของพวกเขาแนะนำให้ใช้ฟังก์ชันนี้เพื่อดูตัวอย่างอนิเมชัน เนื่องจากเป็นวิธีการที่ Roblox Animation Editor ใช้
พารามิเตอร์
จำนวนเวลาในวินาทีที่เล่นอนิเมชั่นจะเพิ่มขึ้น
ส่งค่ากลับ
ตัวอย่างโค้ด
local RunService = game:GetService("RunService")
local function studioPreviewAnimation(model, animation)
-- find the AnimationController and 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
-- load the Animation to create an AnimationTrack
local track = animationController:LoadAnimation(animation)
track:Play()
-- preview the animation
local startTime = tick()
while (tick() - startTime) < track.Length do
local step = RunService.Heartbeat:wait()
animator:StepAnimations(step)
end
-- stop the animation
track:Stop(0)
animator:StepAnimations(0)
-- reset the joints
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() การโทรที่ AnimationTracks ที่สร้างและเป็นเจ้าของโดย Animator