Animator

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

คลาสหลักที่รับผิดชอบการเล่นและการสําเนาของ Animationsการสําเนาทั้งหมดของการเล่น AnimationTracks จะจัดการผ่านตัวอย่าง Animator

ดูเพิ่มเติม เครื่องมือแก้ไขแอนิเมชัน และ การใช้แอนิเมชัน เพื่อเรียนรู้วิธีสร้างและเพิ่มแอนิเมชันที่สร้างไว้ล่วงหน้าหรือกำหนดเองให้กับเกมของคุณ

สรุป

คุณสมบัติ

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    ไม่สามารถเรียกดู
    เขียนพร้อมๆ กัน
  • อ่านพร้อมๆ กัน
  • อ่านอย่างเดียว
    ไม่ซ้ำ
    ไม่สามารถเรียกดู
    เขียนพร้อมๆ กัน
  • อ่านอย่างเดียว
    ไม่ซ้ำ
    ไม่สามารถเรียกดู
    เขียนพร้อมๆ กัน

วิธีการ

อีเวนต์

คุณสมบัติ

EvaluationThrottled

อ่านอย่างเดียว
ไม่ซ้ำ
ไม่สามารถเรียกดู
เขียนพร้อมๆ กัน

PreferLodEnabled

อ่านพร้อมๆ กัน

RootMotion

อ่านอย่างเดียว
ไม่ซ้ำ
ไม่สามารถเรียกดู
เขียนพร้อมๆ กัน

RootMotionWeight

อ่านอย่างเดียว
ไม่ซ้ำ
ไม่สามารถเรียกดู
เขียนพร้อมๆ กัน

วิธีการ

ApplyJointVelocities

()

เนื่องจากชุดปัจจุบันของ AnimationTracks กำลังเล่นและเวลาและความเร็วในการเล่นปัจจุบันของพวกเขา ให้คำนวณความเร็วระหว่างส่วนต่างๆ และนำไปใช้กับ Motor6D.Part1 (ส่วนที่ Animator พิจารณาว่าเป็นส่วน "ลูก")การคำนวณความเร็วสัมพันธ์และการจัดสรรเกิดขึ้นตามลำดับที่กำหนดไว้

วิธีนี้ไม่ใช้ความเร็วสำหรับข้อต่อที่กำหนดหากทั้งส่วนของข้อต่อเป็นส่วนหนึ่งของการประกอบเดียวกันในปัจจุบัน ตัวอย่างเช่น หากพวกเขายังคงเชื่อมต่อโดยตรงหรือโดยอ้อมโดยมอเตอร์หรือเชื่อมต่อโดยตรงหรือโดยอ้อมโดยเชื่อมต่อ

วิธีนี้ไม่ปิดกั้นหรือลบข้อต่อสำหรับคุณคุณต้องปิดใช้งานหรือลบช่องข้อต่อแข็งออกจากการประกอบก่อนที่จะเรียกใช้วิธีนี้

ที่กำหนด Motor6Ds ไม่จำเป็นต้องเป็นลูกหลานของ DataModelการลบข้อต่อออกจาก DataModel ก่อนที่จะเรียกวิธีนี้ได้รับการสนับสนุน

พารามิเตอร์

motors: Variant
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

GetPlayingAnimationTracks

ส่งคืนรายการของการเล่นปัจจุบัน AnimationTracks


ส่งค่ากลับ

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 จะไม่สามารถเลียนแบบได้

พารามิเตอร์

animation: Animation

The Animation ที่จะใช้

ค่าเริ่มต้น: ""

ส่งค่ากลับ

RegisterEvaluationParallelCallback

()

พารามิเตอร์

callback: function
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

StepAnimations

()
การรักษาความปลอดภัยของปลั๊กอิน

เพิ่ม AnimationTrack.TimePosition ของการเล่นทั้งหมดที่โหลดลงบน AnimationTracks โดยใช้การชดเชยกับโมเดลที่เกี่ยวข้องกับ Animator ซึ่งใช้กับ Animatorสำหรับใช้ในแถบคําสั่งหรือโดยปลั๊กอินเท่านั้น

พารามิเตอร์ deltaTime กำหนดจำนวนวินาทีที่จะเพิ่มขึ้นในความคืบหน้าของแอนิเมชั่นโดยปกติฟังก์ชันนี้จะถูกเรียกในลูปเพื่อดูตัวอย่างระยะเวลาของแอนิเมชั่น (ดูตัวอย่าง)

โปรดทราบว่าเมื่อแอนิเมชั่นหยุดเล่นแล้ว ข้อต่อของโมเดลจะต้องรีเซ็ตด้วยตนเองเพื่อตําแหน่งเดิม (ดูตัวอย่าง)

ฟังก์ชันนี้ใช้เพื่อจำลองการเล่นของ Animations เมื่อเกมไม่ได้ทำงานสิ่งนี้ช่วยให้สามารถดูตัวอย่างแอนิเมชั่นได้โดยไม่ต้องเผชิญกับผลกระทบของการเรียกใช้เกม เช่น การดําเนินการของสคริปต์หากฟังก์ชันถูกเรียกในขณะที่เกมกําลังดําเนินการหรือโดย Scripts หรือ LocalScripts จะส่งคืนข้อผิดพลาด

นักพัฒนาที่ออกแบบเอนิมอเรชันกำหนดเองของตนเองควรใช้ฟังก์ชันนี้เพื่อดูตัวอย่างแอนิเมชันเนื่องจากเป็นวิธีที่ช่วงเวลาการแสดงแอนิเมชันทางการของ Roblox Animation Editor ใช้

พารามิเตอร์

deltaTime: number

ปริมาณเวลาในการเล่นแอนิเมชั่นในวินาทีที่จะเพิ่มขึ้น

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

ตัวอย่างโค้ดนี้รวมถึงฟังก์ชันที่สามารถใช้เพื่อดูตัวอย่างแอนิเมชันบนโมเดลใน 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() บนแทร็กแอนิเมชันที่สร้างและเป็นเจ้าของโดยนักแอนิเมชัน

พารามิเตอร์

animationTrack: AnimationTrack