การเล่นอนิเมชันตัวละคร เป็นส่วนสำคัญของสิ่งที่ทำให้อวาตาร์และตัวละครที่ไม่เล่นได้ (NPC) มีชีวิตอมตะ สมจริง และน่าตื่นเต้นสำหรับผู้ชม นอกจากการให้
โดยใช้ไฟล์ Hazardous Space Station.rbxl เป็นตัวอ้างอิง, วิดีโอนี้แสดงให้คุณเห็นวิธีการเล่นอนิเมชั่นตัวละครโดยใช้เทคนิคสองประการ, รวมถึงคำแนะนำเกี่ยวกับ:
- การแลกเปลี่ยนสินทรัพย์อนิเมชันตัวละครเริ่มต้นด้วยอนิเมชันของคุณเอง
- การเรียกใช้อนิเมชันในการตอบสนองต่อการกระทําของตัวละครในพื้นที่ 3D
หลังจากที่คุณผ่านการฝึกนี้คุณจะมีทักษะในการปรับแต่งอนิเมชันสำหรับสถานการณ์เกมที่หลากหลาย
เปลี่ยนแอนิเมชันเริ่มต้น
ทุกตัวละครที่มีวัตถุ Humanoid เริ่มต้น ไม่ว่าจะเป็นตัวละครของผู้เล่นหรือตัวละครของ NPC (NPC) ก็จะรวมถึงชุดของ อนิเมชันเริ่มต้
สมจริงสไตล์ หรือเรื่องราวของโลกของคุณ คุณสามารถแลกเปลี่ยนพวกเขาด้วยเอฟเฟกต์ที่กำหนดเองท
เพื่อแสดงให้เห็น ส่วนต่อไปนี้สอนวิธีการแลกเปลี่ยนอนิเมชันเดินเริ่มต้นด้วยอนิเมชันเดินที่กําหนดเองจาก การสร้างอนิเมชันตัวละคร โดยใช้ประมาณการแลกเปลี่ยนเดียวกันกับไอดี
สร้างสคริป
วัตถุ Humanoid ของทุกตัวละครรวมถึงวัตถุ Animator ที่เก็บรวบรวมวิดีโอแอนิเมชันทั้งหมดของตัวละคร เพื่
เพื่อสร้างสคริปที่จะอ้างถึงไอดีเอสเซ็ตอนิเมชั่นเริ่มต้น:
ในหน้าต่าง Explorer เพิ่มสคริปต์ใหม่ไปยัง ServerScriptService 1. เลือก ServerScriptService และคลิกปุ่ม ⊕ 2. จากเมนูบริบทัศน์ ใส่ สคริปต์ 2. ในสคริปต์ใหม่ รหัส:
local Players = game:GetService("Players")local function onCharacterAdded(character)local humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")print("Animator found!")local function onPlayerAdded(player)player.CharacterAdded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)
แทนที่ AssetID
ตอนนี้คุณรู้ว่าสคริปต์ของคุณสามารถตรวจจับได้เมื่อผู้เล่นโหลดและเชื่อมต่อกับเซิร์ฟเวอร์ คุณสามารถปรับแก้สคริปต์ของคุณเพื่ออ้างอิงได้เฉพาะเลขรหัสอนิเมชันที่คุณต้องการเปลี่ยนกับอนิเมชันเหมือ
ตารางต่อไปนี้รวมถึงอนิเมชันตัวละครที่คุณสามารถเรียกและแทนที่ภายใน Animator โอเคท์ โปรดทราบว่า Idle มีสองรุ่นที่คุณสามารถโปรแกรมเพื่อเล่นบ่อยขึ้นหรือน้อยลง
การกระทําตัวละคร | อ้างอิงสคริปต์แอนิเมชัน |
วิ่ง | animateScript.run.RunAnim.AnimationId |
เดิน | animateScript.walk.WalkAnim.AnimationId |
กระโดด | animateScript.jump.JumpAnim.AnimationId |
ไม่ได้ใช้งาน | animateScript.idle.Animation1.AnimationId``animateScript.idle.Animation2.AnimationId |
ตก | animateScript.fall.FallAnim.AnimationId |
ว่ายน้ํา | animateScript.swim.Swim.AnimationId |
ว่ายน้ํา (ไม่ได้ใช้งาน) | animateScript.swimidle.SwimIdle.AnimationId |
ปีนเขา | animateScript.climb.ClimbAnim.AnimationId |
เพื่อแทนที่สกินอนิเมชั่นเดิม:
โทรสกรีนสคริปต์อนิเมชันเดิมที่เรียกใช้ได้ แล้วแทนที่ด้วยสคริปต์อนิเมชันเอเจนต์ของตัวเอง เช่น ตัวอย่างโค้ดต่อไปนี้สร้างภาพเคลื่อนไหววงล้อจาก สร้างภาพเคลื่อนไหวของตัวละคร
local Players = game:GetService("Players")local function onCharacterAdded(character)local humanoid = character:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")print("Animator found!")local animateScript = character:WaitForChild("Animate")animateScript.walk.WalkAnim.AnimationId = "rbxassetid://122652394532816"local function onPlayerAdded(player)player.CharacterAdded:Connect(onCharacterAdded)endPlayers.PlayerAdded:Connect(onPlayerAdded)ทดสอบประสบการณ์ของคุณเพื่อให้แน่ใจว่าวิดีโอเดินของคุณจะเหนือการเปลี่ยนแปลงอนิเมชันเริ่มต้นที่เป็นปกติ
ในแถบเมนู คลิกปุ่ม เล่น ปุ่ม Studio จะเข้าสู่โหมดทดสอบการเล่น
เดินไปรอบสถานีอวกาศด้วยอวาตาร์ของคุณ
การเรียกใช้แอนิเมชัน
ในขณะที่เทคนิคก่อนหน้านี้มุ่งเน้นไปที่การเปลี่ยนแปลงอนิเมชันเริ่มต้นที่เล่นอัตโนมัติเมื่อตัวละครทำการดำเนินการที่เฉพาะในประสบการณ์ เช่น การเก็บไอเทมหรือการรับคว
วิธีการเล่นอนิเมชันนี้มีประโยชน์เพราะมันให้ข้อเสนอแนะแก่ผู้เล่นทันทีเกี่ยวกับวิธีการที่พวกเขาควรใช้งานกับวัตถุในสภาพแวดล้อมของพวกเขา เพื่อแสดงให้เห็นวิธีการเริ่มต
ใส่ปริมาณ
หนึ่งในวิธีที่พบบ่อยที่สุดในการเรียกใช้พฤติกรรมเกมที่ไม่เหมือนใครคือการใช้ ปริมาณ หรือภาพเขตที่มองไม่เห็นภายในพื้นที่ 3D ผู้เล่น
แอนิเมชันสิ่งสำคัญคือต้องเพิ่มขนาดให้ใหญ่เกินไป เพื่อให้ครอบคลุมพื้นที่ที่คุณต้องการเปิดใช้งานอนิเมชัน หา
แอนิเมชัน:
ใน หน้าต่าง Explorer เพิ่มบล็อกส่วนใหม่
แอนิเมชัน
ใน หน้าต่าง Proprieties 1. ตั้ง ชื่อ เป็น AnimationDetector 2. ตั้ง ความโปร่งใส เป็น 1 เพื่อทำให้บล็อกมองไม่เห็น
สร้างสคริป
ตอนนี้คุณมีภาคส่วนที่กำหนดสำหรับการเรียกใช้อนิเมชันของคุณแล้ว ได้เวลาสร้างสคริปต์ที่ตรวจสอบโปรแกรมอัตโนมัติเมื่อผู้เล่นชนกับเสียง คุณสามารถฟังเหตุการณ์การชนกันเพื่อเปิดใช้งานอน
เช่นนี้เทคนิคการอนิเมชั่นใช้ LocalScript แทนที่จะใช้ Script เพื่อให้ผู้เล่นได้รับการติดต่อกลับทันทีเมื่อพวกเขาชนกับความดังของเสียงในเ
เพื่อสร้างสคริปต์ในพื้นที่ที่จะตรวจจับเมื่อตัวละครของผู้เล่นในพื้นที่สัมผัสกับปริมาณ:
ใน หน้าต่าง Explorer เพิ่มสคริปต์ใหม่ไปยัง StartercharacterScripts หน้านี้จะรับรองว่าสคริปและบุตรหลานของมันจะเปลี่ยนเป็นตัวละครผู้เล่นเมื่อพวกเขาเข้าร่วม และ เมื่อพวกเขากลับมา
- ขยาย StarterPlayer แล้ววางเมาส์ไว้บนลูกของมัน StarterCharacterScripts แล้วคลิกปุ่ม ⊕
- จากเมนู上下컨텍สต์ใส่ LocalScript และเปลี่ยนชื่อมันเป็น TriggerAnimation 2. ในสคริปต์ใหม่ รหัส:
local Workspace = game:GetService("Workspace")local animation = script:WaitForChild("Animation")local humanoid = script.Parent:WaitForChild("Humanoid")local animator = humanoid:WaitForChild("Animator")local animationTrack = animator:LoadAnimation(animation)local animationDetector = Workspace:WaitForChild("AnimationDetector")local debounce = falseanimationDetector.Touched:Connect(function(hit)if debounce thenreturnendlocal hitCharacter = hit:FindFirstAncestorWhichIsA("Model")if hitCharacter ~= localCharacter thenreturnenddebounce = trueanimationTrack:Play()animationTrack.Ended:Wait()debounce = falseend)
สคริปต์ Workspace เริ่มต้นด้วยการรับบริการ Part ซึ่งรวมถึงวัตถุทั้งหมดที่มีอยู่ในโลก 3D นี้ สิ่งนี้สำคัญเพราะสคริปต์ต้องการอ้างอิงวัตถุ 1> Class.Part1> ที่เ
สำหรับแต่ละตัวละครผู้เล่นที่โหลดหรือเกิดใหม่ในประสบการณ์นั้น สคริปต์รอ:
เป็นวัตถุ Animation ของลูกของมันซึ่งคุณจะเพิ่มในส่วนถัดไป
ตัวอุปกรณ์ระดับเสียงในพื้นที่ชื่อ AnimationDetector เมื่ออะไรสัมผัสกับปริมาณ ตัวแปร Touched จะได้รับค่าบรรพบุรุษต้นกำเนิดที่เป็น Model ซึ่งควรเ
ตั้งค่าการเดบาวน์เป็น true
เล่นและรอให้แอนิเมชันสิ้นสุด
ตั้งค่าการเดบาวน์เบ็งกลับไปที่ false
การตั้งค่าดีบาวน์จาก false เป็น true เป็น false อีกครั้งหลังจากที่อนิเมชันจะเล่นต่อไปได้หลังจากที่อนิเมชันนี้จะไม่เริ่มต้นอีกครั้
เพิ่มแอนิเมชั่น
หากคุณจะทดสอบประสบการณ์ของคุณในขณะนี้, สคริปต์ TriggerAnimation ของคุณยังคงไม่สามารถเล่นอนิเมชั่นในการตอบสนองต่อความสัมพันธ์ของผู้เล่นท้อ
เพื่อเพิ่มแอนิเมชันสำหรับสคริปต์ในเกมที่อ้างอิงจากผู้เล่นที่ชนกับปริมาณ:
ใน หน้าต่าง Explorer เพิ่มการอนิเมชั่นใหม่ใน TriggerAnimation 1. เลื่อนเมาส์ไปที่ TriggerAnimation และคลิกปุ่ม ⊕ 2. จากเมนูบริบทัศน์ ใส่ อนิเมชัน 2. เลือกวัตถุอนิเมชั่นใหม่แล้วในหน้าต่าง คุณสมบัติ ตั้ง AnimationID ไว้ที่คุณต้องการเปิดเมื่อผู้เล่นแตะต้องพื้น โดยปกติ Hazardous Space Station</
ทดสอบประสบการณ์ของคุณเพื่อให้แน่ใจว่าอนิเมชันของคุณจะเล่นเมื่อผู้เล่นอยู่ใกล้กับช่องระบายน้ําแรก