ตัวแก้ไขกราฟอนิเมชัน

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

ตัวแก้ไขกราฟอนิเมชัน เป็นเครื่องมือที่มองเห็นได้ซึ่งใช้โหนดที่ช่วยให้ศิลปินทางเทคนิคและนักอนิเมชันสามารถสร้างตรรกะอนิเมชันที่ซับซ้อนได้โดยตรงภายใน Roblox Studio โดยการให้ส่วนติดต่อที่เรียบง่ายสำหรับการสร้างพฤติกรรมเช่นต้นไม้ผสม มันจึงขจัดความจำเป็นในการเขียนสคริปต์ด้วยตนเองสำหรับการเคลื่อนไหวของตัวละคร

ระบบนี้ทำงานร่วมกับกระบวนการอนิเมชันที่มีอยู่ของคุณ:

  • ตัวแก้ไขอนิเมชัน: ใช้ ตัวแก้ไขอนิเมชัน เป็นเครื่องมือหลักของคุณในการสร้างคลิปแต่ละรายการและปรับแต่งคีย์เฟรมและเส้นโค้ง
  • ตัวแก้ไขกราฟอนิเมชัน: ใช้เครื่องมือนี้เพื่อจัดระเบียบคลิปเหล่านั้นในต้นไม้ตรรกะเพื่อขับเคลื่อนพฤติกรรมการเล่นเกมที่ซับซ้อน

ออกแบบมาเพื่อเพิ่มความร่วมมือ กราฟที่มองเห็นได้ช่วยให้นักพัฒนาสามารถตรวจสอบ แก้ไขข้อผิดพลาด และเข้าใจตรรกะที่สร้างโดยนักอนิเมชันได้อย่างรวดเร็ว ในขณะที่ศิลปินมุ่งเน้นไปที่การปรับปรุงการเคลื่อนไหวเชิงโต้ตอบ นักพัฒนาสามารถเข้าถึงโหนดกราฟอนิเมชันได้โดยตรงเพื่อควบคุมอนิเมชันและสถานะที่ผสมกัน

สร้างกราฟ


ในการเริ่มสร้างตรรกะสำหรับตัวละครที่สามารถอนิเมทได้ ให้เข้าถึงตัวแก้ไขกราฟอนิเมชันผ่านแท็บ Avatar ในริบบอนของ Studio ขั้นตอนต่อไปนี้จะแสดงวิธีการเริ่มต้นการตั้งค่าและสร้างเครือข่ายโหนดพื้นฐานโดยใช้อนิเมชันการเดินและการโบกมือเริ่มต้น

สำหรับการเจาะลึกในแอปพลิเคชันจริง คุณสามารถสำรวจ ไฟล์อ้างอิงกราฟอนิเมชัน ซึ่งมีตัวอย่างการใช้งานทั้งพื้นฐานและซับซ้อน

ในการสร้างกราฟอนิเมชันของคุณเอง คล้ายกับตัวอย่างพื้นฐานที่ให้ไว้ในเอกสารอ้างอิง ให้ใช้ขั้นตอนต่อไปนี้:

  1. ใน Studio ให้เพิ่มการตั้งค่าที่สามารถอนิเมทได้โดยการไปที่แท็บ Avatar และเลือก Character ⟩ My Avatar.

    ปุ่มตัวละครที่เน้นในแถบเครื่องมือของ Studio.
  2. เปิดตัวแก้ไขกราฟอนิเมชันโดยการไปที่ Graph Editor ในแท็บ Avatar.

    ตัวแก้ไขกราฟอนิเมชันที่ระบุในแถบเครื่องมือของ Studio.
  3. เลือกการตั้งค่าที่สามารถอนิเมทได้ในมุมมอง 3D และเลือก Create Graph.

  4. ในตัวแก้ไขกราฟ คลิกขวาและเลือก Clip.

    รายการโหนดในเมนูคลิกขวา
  5. ในโหนด Clip ใหม่ ให้ตั้งค่า Animation ID.

    1. เลือกดรอปดาวน์ Animation ID.

    2. เพื่อส่ง ID ของสินทรัพย์อนิเมชันเฉพาะ ให้คลิก Import.

      ระบุฟิลด์ในโมดูลการนำเข้าอนิเมชันเพื่อเพิ่ม Animation ID
    3. ในฟิลด์ Animation ID ให้เพิ่มอนิเมชันการเดินเริ่มต้น: 507777826.

    4. เลือก Import.

  6. เพิ่มโหนดคลิปอีกอันโดยทำซ้ำขั้นตอน 4-5 โดยใช้อนิเมชันการโบกมือเริ่มต้น: 507770239.

    โหนดคลิปสองโหนดที่มี Animation ID ที่กรอกข้อมูล
  7. ในตัวแก้ไขกราฟ คลิกขวาและเลือก Add.

    เพิ่มโหนด
  8. เชื่อมต่อโหนด Clip กับโหนด Add โดยการลากตัวเชื่อมต่อเอาต์พุตด้านบนขวาไปยังพอร์ตที่เหมาะสม:

    1. เชื่อมต่อโหนด Clip ที่มีอนิเมชันการเดินไปยังพอร์ต Base.
    2. เชื่อมต่อโหนด Clip ที่มีอนิเมชันการโบกมือไปยังพอร์ต Additive.
    โหนดคลิปทั้งสองเชื่อมต่อกับโหนดเพิ่ม
  9. จากโหนด Add เชื่อมต่อตัวเชื่อมต่อเอาต์พุตด้านบนขวาไปยังพอร์ต Graph Output Pose.

    โหนดทั้งหมดเชื่อมต่อกับโหนดเอาต์พุตสุดท้าย
  10. ทางเลือก
    กำหนดพารามิเตอร์ให้กับตัวแปร Speed ของคุณ

    1. คลิกและลากพอร์ต Speed สีเขียวไปยังพื้นที่ว่าง พารามิเตอร์โหนดใหม่จะแสดง

      คลิกและลากตัวเชื่อมต่อจากพอร์ต Speed ของโหนด Clip.
    2. ที่มุมซ้ายบนของตัวแก้ไขกราฟ ใช้พาเนลพารามิเตอร์เพื่อปรับเปลี่ยนพารามิเตอร์ในโหนดของคุณอย่างรวดเร็ว คุณยังสามารถเข้าถึงได้ โปรแกรมmatically.

      พาเนลพารามิเตอร์ โหนดพารามิเตอร์ และโหนดคลิปที่แสดงค่าที่แชร์กัน.
  11. ทดสอบอนิเมชันโดยการกด ปุ่มเล่น.

    ไอคอนปุ่มเล่นสำหรับการดูตัวอย่างอนิเมชัน
  12. ลองทดสอบน้ำหนัก ความเร็ว โหมดการเล่น และอนิเมชันอื่นๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโหนดแต่ละรายการ โปรดดูที่ อ้างอิงโหนด.

การรวม API

การสร้างและปรับใช้กราฟอนิเมชันตามมาตรฐานของ Roblox animation pipeline หลังจากเลือกการตั้งค่าในตัวแก้ไขกราฟอนิเมชัน สินทรัพย์ AnimationGraphDefinition ใหม่จะถูกสร้างขึ้น สินทรัพย์นี้ทำหน้าที่เป็นที่เก็บสำหรับโหนด การเชื่อมต่อ และพารามิเตอร์ของคุณ เมื่อคุณทำตรรกะเสร็จสิ้น คุณจะเผยแพร่กราฟเพื่อรับ Asset ID มาตรฐาน

ในสคริปต์ของคุณ คุณจะโต้ตอบกับกราฟเหล่านี้โดยการโหลดลงใน Animator เหมือนกับอนิเมชันแบบดั้งเดิม เพื่อขับเคลื่อนตรรกะภายในของกราฟ ให้ใช้ AnimationTrack:SetParameter() เพื่อส่งค่าจริง เช่น ความเร็วในการเคลื่อนไหวหรือสถานะบูลีนโดยตรงไปยังตัวแปรของกราฟ

local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://123456789" -- ID ของกราฟที่เผยแพร่ของคุณ
local animationTrack = animator:LoadAnimation(animation)
animationTrack:Play()
-- การอัปเดตพารามิเตอร์แบบไดนามิกผ่าน RunService
game:GetService("RunService").Stepped:Connect(function(_, dt)
local currentSpeed = humanoidRootPart.AssemblyLinearVelocity.Magnitude
animationTrack:SetParameter("humanoidSpeed", currentSpeed)
end)

อ้างอิงโหนด

กฎเหตุการณ์ทั่วโลก

สำหรับโหนดทั้งหมดและ การเปลี่ยนผ่าน กฎต่อไปนี้จะใช้โดยค่าเริ่มต้น:

  • เหตุการณ์จะส่งต่อขึ้นไปจากโหนดต้นทางผ่านกราฟ เหตุการณ์แต่ละรายการจะมีน้ำหนักที่แสดงถึงอิทธิพลของแหล่งที่มาของมันในส่วนผสมสุดท้าย หากน้ำหนักถึงศูนย์ในจุดใดจุดหนึ่ง เหตุการณ์จะถูกปิดเสียง
  • โหนดที่ไม่มีตรรกะเหตุการณ์ที่กำหนดเองจะส่งผ่านเหตุการณ์ทั้งหมดโดยไม่เปลี่ยนแปลง; โหนดที่ผสมหรือเลือกระหว่างข้อมูลนำเข้าอาจปรับน้ำหนักหรือบล็อกเหตุการณ์จากข้อมูลนำเข้าสำรอง (ดูส่วนเหตุการณ์ต่อโหนด)
  • เหตุการณ์ Marker ที่ถึงจุดสูงสุดของกราฟสามารถสังเกตได้ผ่าน AnimationTrack:GetMarkerReachedSignal().

การเปลี่ยนผ่าน

โหนดหลายตัวในกราฟอนิเมชัน (เช่น Select, Priority Select, Sequence, และ Random Sequence) จัดการวิธีการที่อนิเมชันผสมกันเมื่อเปลี่ยนระหว่างข้อมูลนำเข้าสำหรับการใช้งานซ้ำในเอกสารอ้างอิงโหนด พฤติกรรมเหล่านี้จะถูกกำหนดโดยกลุ่มคุณสมบัติการเปลี่ยนผ่านที่ได้มาตรฐาน

การเปลี่ยนผ่านเริ่มต้น

การเปลี่ยนผ่านเริ่มต้น

พฤติกรรมการผสมพื้นฐานที่ใช้กับโหนดเมื่อใดก็ตามที่มันเปลี่ยนไปยังข้อมูลนำเข้าสำหรับการใช้งานใหม่

  • DefaultTransitionDuration (number): เวลาที่ใช้ (เป็นวินาที) ในการผสมเข้ากับท่าทางใหม่อย่างเต็มที่
  • DefaultTransitionCurve (Enum.PoseEasingStyle): ฟังก์ชันการทำให้เรียบที่ใช้ระหว่างการผสม ปัจจุบันรองรับเฉพาะ Enum.PoseEasingStyle.Linear และ Enum.PoseEasingStyle.CubicV2.

การเปลี่ยนผ่านที่แทนที่

การเปลี่ยนผ่านที่แทนที่

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

  • TransitionOverrideDuration (number): แทนที่ระยะเวลาการเปลี่ยนผ่านเริ่มต้น
  • TransitionOverrideCurve (Enum.PoseEasingStyle): แทนที่โค้งการเปลี่ยนผ่านเริ่มต้น ปัจจุบันรองรับเฉพาะ Enum.PoseEasingStyle.Linear และ Enum.PoseEasingStyle.CubicV2

การจำลอง

พารามิเตอร์กราฟอนิเมชันและสถานะโหนดภายในจะถูกจำลองโดยอัตโนมัติ โหมดการจำลองจะถูกกำหนดโดย Workspace.AuthorityMode ในขณะที่สคริปต์ Animate ถูกสร้างขึ้น:

  • ใน Enum.AuthorityMode.Automatic: พารามิเตอร์ที่ตั้งค่าผ่าน AnimationTrack:SetParameter() จะถูกจำลองโดยอัตโนมัติไปยังเพื่อนร่วมงานคนอื่น
  • ใน Enum.AuthorityMode.Server: เซิร์ฟเวอร์ขับเคลื่อนการจำลองกราฟทั้งหมด สถานะโหนดทั้งหมด เช่น เวลาที่ผ่านไปสำหรับ Enum.AnimationNodeType.ClipNode และพารามิเตอร์กราฟจะถูกจำลองโดยอัตโนมัติจากเซิร์ฟเวอร์ไปยังลูกค้า ลูกค้าของผู้เล่นที่เป็นเจ้าของจะใช้การคาดการณ์เพื่อให้การเล่นในท้องถิ่นราบรื่น

สคริปต์ Animate ตัวอย่าง

ในการสร้างสคริปต์ตัวอย่างเพื่อขับเคลื่อนกราฟอนิเมชันสำหรับการตั้งค่า ให้ใช้ Graph -> Create Animate script ในตัวแก้ไขกราฟอนิเมชัน สิ่งนี้จะผลิตลำดับชั้นของสคริปต์ที่วางอยู่ภายใต้ StarterCharacterScripts (สำหรับตัวละครผู้เล่น) หรือโดยตรงบนการตั้งค่า (สำหรับ NPC):

Animate (ModuleScript)
├── RunClient (LocalScript)
└── RunServer (Script, RunContext = Legacy)

Animate ModuleScript มีตรรกะการโหลดกราฟ RunClient และ RunServer สคริปต์เรียกใช้ในบริบทที่เหมาะสม สคริปต์ใดที่รวมอยู่ขึ้นอยู่กับกรณีการใช้งาน:

กรณีการใช้งานสคริปต์ที่รวมอยู่พฤติกรรม
NPC (โหมดใด ๆ)RunServerเซิร์ฟเวอร์โหลดและเล่นกราฟ สถานะจะถูกจำลองไปยังลูกค้าทั้งหมดโดยอัตโนมัติ
ผู้เล่น + Enum.AuthorityMode.ServerRunServer + RunClientเซิร์ฟเวอร์ขับเคลื่อนกราฟอย่างมีอำนาจ ลูกค้าที่เป็นเจ้าของเปิดใช้งาน Enum.PredictionMode สำหรับการคาดการณ์ในท้องถิ่นแบบย้อนกลับ
ผู้เล่น + Enum.AuthorityMode.AutomaticRunClientลูกค้าที่เป็นเจ้าของโหลดและเล่นกราฟ พารามิเตอร์จะถูกจำลองโดยอัตโนมัติไปยังเซิร์ฟเวอร์และลูกค้าคนอื่น

คุณสมบัติต่อไปนี้จะถูกเก็บไว้ในสคริปต์ Animate และกำหนดพฤติกรรมของมัน:

คุณสมบัติประเภทคำอธิบาย
GraphNameStringชื่อของสินทรัพย์กราฟอนิเมชัน
CharacterNameStringชื่อของการตั้งค่าที่กราฟมุ่งเป้าไปที่
SourceAssetIdStringID ของสินทรัพย์ที่เผยแพร่ของกราฟ ใช้ในระหว่างการทำงานในเกมที่เผยแพร่
IsServerAuthorityBooleanสคริปต์ถูกสร้างขึ้นด้วย Workspace.AuthorityMode ตั้งค่าเป็น Server หรือไม่ กำหนดกลยุทธ์การจำลอง
PreviewInStudioBooleanเมื่อเป็นจริง (ค่าเริ่มต้น) การทดสอบใน Studio จะโหลดกราฟที่ยังไม่ได้เผยแพร่ในท้องถิ่นเพื่อให้คุณสามารถทำซ้ำได้โดยไม่ต้องเผยแพร่ ตั้งค่าเป็นเท็จเพื่อลองสินทรัพย์ที่เผยแพร่ใน Studio โปรดทราบว่านี่ไม่รองรับใน Enum.AuthorityMode.Server ในขณะนี้

การจำลองพารามิเตอร์ในโหมดอัตโนมัติ

เมื่อ Workspace.AuthorityMode เป็น Automatic:

  • ลูกค้าที่เป็นเจ้าของ ขับเคลื่อนกราฟตัวละครผู้เล่น; เซิร์ฟเวอร์ ขับเคลื่อนกราฟ NPC
  • พารามิเตอร์ที่ตั้งค่าผ่าน AnimationTrack:SetParameter() จะถูกจำลองโดยอัตโนมัติไปยังเพื่อนร่วมงานคนอื่น การเรียก SetParameter หลายครั้งภายในเฟรมเดียวจะถูกรวมกัน (ผู้เขียนสุดท้ายชนะ)
  • ไม่ต้องการการเขียนสคริปต์เพิ่มเติมสำหรับการขนส่งพารามิเตอร์ — เอนจินจัดการการจำลองภายใน
  • ลูกค้าอื่นเห็นการอัปเดตพารามิเตอร์ด้วยความล่าช้าขนาดเล็ก (หนึ่งช่วงเวลาการส่งบวกกับความล่าช้าในเครือข่าย)

อำนาจของเซิร์ฟเวอร์

เมื่อ Workspace.AuthorityMode เป็น Server:

  • เซิร์ฟเวอร์ มีอำนาจเหนือกราฟทั้งหมด — มันทำการจำลองและจำลองสถานะกราฟทั้งหมด
  • สิ่งที่ถูกจำลอง: ทั้งพารามิเตอร์และสถานะโหนดภายใน รวมถึงเวลาที่ผ่านไป การเลือกปัจจุบัน ความก้าวหน้าของการเปลี่ยนผ่าน จำนวนรอบ และเมล็ด RNG สิ่งนี้ทำให้แน่ใจว่าลูกค้าทั้งหมดเห็นพฤติกรรมอนิเมชันที่เหมือนกัน
  • ตัวละครผู้เล่น: เซิร์ฟเวอร์ขับเคลื่อนกราฟ ลูกค้าของผู้เป็นเจ้าของ RunClient สคริปต์จะเปิดใช้งาน Enum.PredictionMode โดยอัตโนมัติบน Animator ดังนั้นผู้เล่นในท้องถิ่นจึงเห็นอนิเมชันที่ราบรื่นและคาดการณ์ซึ่งปรับให้เข้ากับเซิร์ฟเวอร์เมื่อมีความไม่ตรงกัน
  • NPCs: เซิร์ฟเวอร์ขับเคลื่อนกราฟโดยเฉพาะ ลูกค้าสังเกตเห็นสถานะที่จำลองโดยไม่มีการจำลองในท้องถิ่น

การขับเคลื่อนพารามิเตอร์

ใช้ AnimationTrack:SetParameter() จากทุกสคริปต์ที่รันกราฟ:

  • NPC (โหมดใด ๆ): เรียก SetParameter จาก RunServer (หรือสคริปต์เซิร์ฟเวอร์ Script ใด ๆ ที่เข้าถึง AnimationTrack)
  • ตัวละครผู้เล่นใน Enum.AuthorityMode.Server: เรียก SetParameter จาก ทั้งสอง RunServer และ RunClient เซิร์ฟเวอร์ต้องการพารามิเตอร์เพื่อขับเคลื่อนการจำลองที่มีอำนาจ และลูกค้าที่เป็นเจ้าของต้องการพารามิเตอร์เดียวกันเพื่อขับเคลื่อนการคาดการณ์ในท้องถิ่น
  • ตัวละครผู้เล่นใน Enum.AuthorityMode.Automatic: เรียก SetParameter จาก RunClient (หรือสคริปต์ท้องถิ่น LocalScript ใด ๆ ที่เข้าถึง AnimationTrack)

สคริปต์ Animate ที่สร้างขึ้นจะรวมบล็อก SetParameter ที่ถูกคอมเมนต์ออกเป็นจุดเริ่มต้น ยกเลิกการคอมเมนต์และปรับเปลี่ยนเพื่อขับเคลื่อนพารามิเตอร์จากสถานะการเล่น (ความเร็วในการเคลื่อนไหว สถานะของมนุษย์ ทิศทางการป้อนข้อมูล ฯลฯ)

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ