เมื่อคุณได้ สร้างการเคลื่อนไหว เสร็จแล้ว คุณต้องใช้สคริปต์เพื่อรวมมันเข้ากับเกมของคุณ คุณสามารถ เล่นการเคลื่อนไหวแบบแมนนวล จากสคริปต์หรือ แทนที่การเคลื่อนไหวเริ่มต้น สำหรับตัวละครของผู้เล่น
เล่นการเคลื่อนไหวจากสคริปต์
ในบางกรณี คุณจะต้องเล่นการเคลื่อนไหวโดยตรงจากภายในสคริปต์ เช่น เมื่อผู้ใช้กดปุ่มเฉพาะหรือหยิบไอเท็มพิเศษ
มนุษย์
ในการเล่นการเคลื่อนไหวบนร่างที่มีวัตถุ Humanoid เช่นตัวละครที่เล่นได้ทั่วไป ให้ทำตามรูปแบบพื้นฐานนี้:
- สร้างอินสแตนซ์ Animation ใหม่พร้อมกับ AnimationId ที่ถูกต้อง
- โหลดการเคลื่อนไหวผ่าน Animator:LoadAnimation() เพื่อสร้าง AnimationTrack
- เล่นแทร็คด้วย AnimationTrack:Play()
ตัวอย่างเช่น LocalScript ต่อไปนี้ เมื่อวางไว้ใน StarterPlayerScripts จะโหลดการเคลื่อนไหว "เตะ" ลงในตัวละครของผู้เล่นและเล่นมัน สคริปต์ยังใช้เมธอด GetMarkerReachedSignal() เพื่อตรวจจับเมื่อเกิด เหตุการณ์การเคลื่อนไหว ที่เฉพาะเจาะจง
LocalScript - เล่นการเคลื่อนไหวที่กำหนดเองในตัวละครของผู้เล่น
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- ตรวจสอบว่า humanoid ของตัวละครมีวัตถุ "Animator"
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- สร้างอินสแตนซ์ "Animation" ใหม่และกำหนดหมายเลข asset ของการเคลื่อนไหว
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- โหลดการเคลื่อนไหวเข้าไปใน animator
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- หากมีเหตุการณ์ที่ตั้งชื่อมาสำหรับการเคลื่อนไหว เชื่อมต่อกับ "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- เล่นแทร็คการเคลื่อนไหว
kickAnimationTrack:Play()
แบบไม่ใช่มนุษย์
ในการเล่นการเคลื่อนไหวบนร่างที่ ไม่มี วัตถุ Humanoid คุณต้องสร้าง AnimationController โดยมี Animator เป็นลูก ซึ่งตัวอย่างนี้ถือว่ามี Script เป็นลูกของร่างใช้ในการโหลดการเคลื่อนไหว "เตะ" และเล่นมัน
Script - เล่นการเคลื่อนไหวที่กำหนดเองในร่างตัวละคร
local rig = script.Parent
-- สร้างอินสแตนซ์ "Animation" ใหม่และกำหนดหมายเลข asset ของการเคลื่อนไหว
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- สร้าง "AnimationController" ใหม่และ "Animator"
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- โหลดการเคลื่อนไหวไปยัง animator
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- หากมีเหตุการณ์ที่ตั้งชื่อมาสำหรับการเคลื่อนไหว เชื่อมต่อกับ "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
task.wait(4)
-- เล่นแทร็คการเคลื่อนไหว
kickAnimationTrack:Play()
แทนที่การเคลื่อนไหวเริ่มต้น
ตามค่าเริ่มต้น ตัวละครของผู้เล่น Roblox จะรวมการเคลื่อนไหวทั่วไปเช่นการวิ่ง การปีน การว่ายน้ำ และการกระโดด คุณสามารถแทนที่ การเคลื่อนไหวเริ่มต้น นี้ด้วยการเคลื่อนไหวจาก คลัง หรือด้วยการเคลื่อนไหว กำหนดเอง ของคุณ
รับ หมายเลข asset ของการเคลื่อนไหวใหม่ดังนี้:
- สำหรับการเคลื่อนไหวแบบกำหนดเองที่สร้างขึ้นด้วย Animation Editor ให้ทำตามคำแนะนำด้าน การส่งออก
- คัดลอก ID ที่เหมาะสมจาก การอ้างอิงการเคลื่อนไหวจากคลัง ด้านล่าง สำหรับตัวอย่าง หากต้องการแทนที่การเคลื่อนไหววิ่งเริ่มต้นด้วย Ninja Run ผันผมใช้ 656118852
ในสคริปต์ใหม่ ให้วางโค้ดต่อไปนี้:
Script - แทนที่การเคลื่อนไหวเริ่มต้นของตัวละครlocal Players = game:GetService("Players")local function onCharacterAdded(character)-- รับ animator บน humanoidlocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- หยุดแทร็คการเคลื่อนไหวทั้งหมดfor _, playingTrack in animator:GetPlayingAnimationTracks() doplayingTrack:Stop(0)endlocal animateScript = character:WaitForChild("Animate")--animateScript.run.RunAnim.AnimationId = "rbxassetid://"--animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"--animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"--animateScript.idle.Animation1.AnimationId = "rbxassetid://"--animateScript.idle.Animation2.AnimationId = "rbxassetid://"--animateScript.fall.FallAnim.AnimationId = "rbxassetid://"--animateScript.swim.Swim.AnimationId = "rbxassetid://"--animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"--animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)สำหรับแต่ละบรรทัดที่อ้างถึงการ เคลื่อนไหวเริ่มต้นของตัวละคร ให้ยกเลิกการแสดงความคิดเห็นและวาง ID แทนที่หลังจาก rbxassetid:// สำหรับตัวอย่าง หากต้องการเปลี่ยนการเคลื่อนไหววิ่งเริ่มต้นไปยัง Ninja Run ผันผม:
Script - แทนที่การเคลื่อนไหวเริ่มต้นของตัวละครlocal Players = game:GetService("Players")local function onCharacterAdded(character)-- รับ animator บน humanoidlocal humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")-- หยุดแทร็คการเคลื่อนไหวทั้งหมดfor _, playingTrack in animator:GetPlayingAnimationTracks() doplayingTrack:Stop(0)endlocal animateScript = character:WaitForChild("Animate")animateScript.run.RunAnim.AnimationId = "rbxassetid://656118852"--animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"--animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"--animateScript.idle.Animation1.AnimationId = "rbxassetid://"--animateScript.idle.Animation2.AnimationId = "rbxassetid://"--animateScript.fall.FallAnim.AnimationId = "rbxassetid://"--animateScript.swim.Swim.AnimationId = "rbxassetid://"--animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"--animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"endlocal function onPlayerAdded(player)player.CharacterAppearanceLoaded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)
ตั้งค่าน้ำหนักการเคลื่อนไหว
คุณสามารถใช้การเคลื่อนไหวหลายรายการสำหรับการกระทำเดียวกัน ตัวอย่างเช่น มีการเปลี่ยนแปลง idle สองอย่างในตัวอย่างโค้ดสำหรับ การแทนที่การเคลื่อนไหวเริ่มต้น
เมื่อมีการเคลื่อนไหวหลายรายการสำหรับสถานะของตัวละคร สคริปต์ Animate จะเลือกแบบสุ่มว่าจะเล่นอันไหน แต่คุณสามารถมีอิทธิพลต่อผลลัพธ์โดยการตั้งค่าน้ำหนักของการเคลื่อนไหวโดยใช้สูตรต่อไปนี้:
- น้ำหนักการเคลื่อนไหว / น้ำหนักรวมของการเคลื่อนไหวในสถานะทั้งหมด
ในตัวอย่างต่อไปนี้ idle.Animation1 จะเล่น ⅓ ของเวลาที่ตัวละครอยู่นิ่ง ขณะที่ idle.Animation2 จะเล่น ⅔ ของเวลา
Script - แทนที่การเคลื่อนไหวเริ่มต้นของตัวละครanimateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"animateScript.idle.Animation1.Weight.Value = 5animateScript.idle.Animation2.Weight.Value = 10
การอ้างอิงการเคลื่อนไหว
การเคลื่อนไหวเริ่มต้นของตัวละคร
ตารางต่อไปนี้ประกอบด้วยการเคลื่อนไหวเริ่มต้นทั้งหมดของตัวละครที่คุณสามารถ แทนที่ ด้วยการเคลื่อนไหวจาก คลัง หรือการเคลื่อนไหว กำหนดเอง ของคุณ โปรดทราบว่า Idle มีการเปลี่ยนแปลงสองแบบที่คุณสามารถ ตั้งน้ำหนัก เพื่อให้เล่นบ่อยหรือน้อยลง
| การกระทำของตัวละคร | การอ้างอิงในสคริปต์ Animate |
| วิ่ง | animateScript.run.RunAnim.AnimationId |
| เดิน | animateScript.walk.WalkAnim.AnimationId |
| กระโดด | animateScript.jump.JumpAnim.AnimationId |
| นั่งนิ่ง | animateScript.idle.Animation1.AnimationId |
| ตก | animateScript.fall.FallAnim.AnimationId |
| ว่ายน้ำ | animateScript.swim.Swim.AnimationId |
| ว่ายน้ำ (นั่งนิ่ง) | animateScript.swimidle.SwimIdle.AnimationId |
| ปีน | animateScript.climb.ClimbAnim.AnimationId |
การเคลื่อนไหวจากคลัง
เมื่อใช้แพ็คเกจการเคลื่อนไหวของอวตารเพื่อ แทนที่การเคลื่อนไหวเริ่มต้น ให้ใช้การอ้างอิงต่อไปนี้สำหรับหมายเลข asset ที่เหมาะสม ตัวอย่างเช่น หากคุณต้องการใช้การเคลื่อนไหว Ninja Jump ให้ใช้ 656117878 โปรดทราบว่า Idle มีการเปลี่ยนแปลงหลายแบบ
| นักบินอวกาศ | วิ่ง 891636393 เดิน 891636393 กระโดด 891627522 นั่งนิ่ง 891621366, 891633237, 1047759695 ตก 891617961 ว่ายน้ำ 891639666 ว่ายน้ำ (นั่งนิ่ง) 891663592 ปีน 891609353 |
| มีฟอง | วิ่ง 910025107 เดิน 910034870 กระโดด 910016857 นั่งนิ่ง 910004836, 910009958, 1018536639 ตก 910001910 ว่ายน้ำ 910028158 ว่ายน้ำ (นั่งนิ่ง) 910030921 ปีน 909997997 |
| การ์ตูน | วิ่ง 742638842 เดิน 742640026 กระโดด 742637942 นั่งนิ่ง 742637544, 742638445, 885477856 ตก 742637151 ว่ายน้ำ 742639220 ว่ายน้ำ (นั่งนิ่ง) 742639812 ปีน 742636889 |
| ผู้สูงอายุ | วิ่ง 845386501 เดิน 845403856 กระโดด 845398858 นั่งนิ่ง 845397899, 845400520, 901160519 ตก 845396048 ว่ายน้ำ 845401742 ว่ายน้ำ (นั่งนิ่ง) 845403127 ปีน 845392038 |
| อัศวิน | วิ่ง 657564596 เดิน 657552124 กระโดด 658409194 นั่งนิ่ง 657595757, 657568135, 885499184 ตก 657600338 ว่ายน้ำ 657560551 ว่ายน้ำ (นั่งนิ่ง) 657557095 ปีน 658360781 |
| การลอย | วิ่ง 616010382 เดิน 616013216 กระโดด 616008936 นั่งนิ่ง 616006778, 616008087, 886862142 ตก 616005863 ว่ายน้ำ 616011509 ว่ายน้ำ (นั่งนิ่ง) 616012453 ปีน 616003713 |
| พ่อมด | วิ่ง 707861613 เดิน 707897309 กระโดด 707853694 นั่งนิ่ง 707742142, 707855907, 885508740 ตก 707829716 ว่ายน้ำ 707876443 ว่ายน้ำ (นั่งนิ่ง) 707894699 ปีน 707826056 |
| นินจา | วิ่ง 656118852 เดิน 656121766 กระโดด 656117878 นั่งนิ่ง 656117400, 656118341, 886742569 ตก 656115606 ว่ายน้ำ 656119721 ว่ายน้ำ (นั่งนิ่ง) 656121397 ปีน 656114359 |
| โจรสลัด | วิ่ง 750783738 เดิน 750785693 กระโดด 750782230 นั่งนิ่ง 750781874, 750782770, 885515365 ตก 750780242 ว่ายน้ำ 750784579 ว่ายน้ำ (นั่งนิ่ง) 750785176 ปีน 750779899 |
| หุ่นยนต์ | วิ่ง 616091570 เดิน 616095330 กระโดด 616090535 นั่งนิ่ง 616088211, 616089559, 885531463 ตก 616087089 ว่ายน้ำ 616092998 ว่ายน้ำ (นั่งนิ่ง) 616094091 ปีน 616086039 |
| Rthro | วิ่ง 2510198475 เดิน 2510202577 กระโดด 2510197830 นั่งนิ่ง 2510197257, 2510196951, 3711062489 ตก 2510195892 ว่ายน้ำ 2510199791 ว่ายน้ำ (นั่งนิ่ง) 2510201162 ปีน 2510192778 |
| มีสไตล์ | วิ่ง 616140816 เดิน 616146177 กระโดด 616139451 นั่งนิ่ง 616136790, 616138447, 886888594 ตก 616134815 ว่ายน้ำ 616143378 ว่ายน้ำ (นั่งนิ่ง) 616144772 ปีน 616133594 |
| ซุปเปอร์ฮีโร่ | วิ่ง 616117076 เดิน 616122287 กระโดด 616115533 นั่งนิ่ง 616111295, 616113536, 885535855 ตก 616108001 ว่ายน้ำ 616119360 ว่ายน้ำ (นั่งนิ่ง) 616120861 ปีน 616104706 |
| ของเล่น | วิ่ง 782842708 เดิน 782843345 กระโดด 782847020 นั่งนิ่ง 782841498, 782845736, 980952228 ตก 782846423 ว่ายน้ำ 782844582 ว่ายน้ำ (นั่งนิ่ง) 782845186 ปีน 782843869 |
| แวมไพร์ | วิ่ง 1083462077 เดิน 1083473930 กระโดด 1083455352 นั่งนิ่ง 1083445855, 1083450166, 1088037547 ตก 1083443587 ว่ายน้ำ 1083464683 ว่ายน้ำ (นั่งนิ่ง) 1083467779 ปีน 1083439238 |
| มนุษย์หมาป่า | วิ่ง 1083216690 เดิน 1083178339 กระโดด 1083218792 นั่งนิ่ง 1083195517, 1083214717, 1099492820 ตก 1083189019 ว่ายน้ำ 1083222527 ว่ายน้ำ (นั่งนิ่ง) 1083225406 ปีน 1083182000 |
| ซอมบี้ | วิ่ง 616163682 เดิน 616168032 กระโดด 616161997 นั่งนิ่ง 616158929, 616160636, 885545458 ตก 616157476 ว่ายน้ำ 616165109 ว่ายน้ำ (นั่งนิ่ง) 616166655 ปีน 616156119 |