เล่นอนิเมชั่นตัวละคร

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

การเล่นอนิเมชันตัวละคร เป็นส่วนสำคัญของสิ่งที่ทำให้อวาตาร์และตัวละครที่ไม่เล่นได้ (NPC) มีชีวิตอมตะ สมจริง และน่าตื่นเต้นสำหรับผู้ชม นอกจากการให้

โดยใช้ไฟล์ Hazardous Space Station.rbxl เป็นตัวอ้างอิง, วิดีโอนี้แสดงให้คุณเห็นวิธีการเล่นอนิเมชั่นตัวละครโดยใช้เทคนิคสองประการ, รวมถึงคำแนะนำเกี่ยวกับ:

  • การแลกเปลี่ยนสินทรัพย์อนิเมชันตัวละครเริ่มต้นด้วยอนิเมชันของคุณเอง
  • การเรียกใช้อนิเมชันในการตอบสนองต่อการกระทําของตัวละครในพื้นที่ 3D

หลังจากที่คุณผ่านการฝึกนี้คุณจะมีทักษะในการปรับแต่งอนิเมชันสำหรับสถานการณ์เกมที่หลากหลาย

เปลี่ยนแอนิเมชันเริ่มต้น

ทุกตัวละครที่มีวัตถุ Humanoid เริ่มต้น ไม่ว่าจะเป็นตัวละครของผู้เล่นหรือตัวละครของ NPC (NPC) ก็จะรวมถึงชุดของ อนิเมชันเริ่มต้

อนิเมชั่นการตกแบบการเริ่มต้น
อนิเมชั่นว่ายน้ําเริ่มต้น
อนิเมชั่นการปีนเขาเริ่มต้น

สมจริงสไตล์ หรือเรื่องราวของโลกของคุณ คุณสามารถแลกเปลี่ยนพวกเขาด้วยเอฟเฟกต์ที่กำหนดเองท

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

อนิเมชั่นเดินปกติ
อนิเมชั่นเดินที่กําหนดเอง

สร้างสคริป

วัตถุ Humanoid ของทุกตัวละครรวมถึงวัตถุ Animator ที่เก็บรวบรวมวิดีโอแอนิเมชันทั้งหมดของตัวละคร เพื่

เพื่อสร้างสคริปที่จะอ้างถึงไอดีเอสเซ็ตอนิเมชั่นเริ่มต้น:

  1. ในหน้าต่าง 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)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

สคริปต์ ResetDefaultAnimations เริ่มต้นด้วยการรับบริการ Players ซึ่งรวมทุกวัตถุ Player สำห

เมื่อตรวจพบวัตถุ Animator ครั้งแรกสคริปต์จะพิมพ์ "Animator พบ!" เพื่อให้คุณรู้ว่าสคริปต์ทำงานตามที่ตั้งใจไว้

แทนที่ 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

เพื่อแทนที่สกินอนิเมชั่นเดิม:

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


    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)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. ทดสอบประสบการณ์ของคุณเพื่อให้แน่ใจว่าวิดีโอเดินของคุณจะเหนือการเปลี่ยนแปลงอนิเมชันเริ่มต้นที่เป็นปกติ

    1. ในแถบเมนู คลิกปุ่ม เล่น ปุ่ม Studio จะเข้าสู่โหมดทดสอบการเล่น

      A Studio view of the Home tab with the Play button highlighted.
    2. เดินไปรอบสถานีอวกาศด้วยอวาตาร์ของคุณ

การเรียกใช้แอนิเมชัน

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

ในตัวอย่างนี้เมื่อผู้เล่นแตะที่แพลตฟอร์มทองคำพวกเขาจะเริ่มการเต้นรําตัวละครที่ไม่ใช่เรื่องปกติของพวกเขา

วิธีการเล่นอนิเมชันนี้มีประโยชน์เพราะมันให้ข้อเสนอแนะแก่ผู้เล่นทันทีเกี่ยวกับวิธีการที่พวกเขาควรใช้งานกับวัตถุในสภาพแวดล้อมของพวกเขา เพื่อแสดงให้เห็นวิธีการเริ่มต

ใส่ปริมาณ

หนึ่งในวิธีที่พบบ่อยที่สุดในการเรียกใช้พฤติกรรมเกมที่ไม่เหมือนใครคือการใช้ ปริมาณ หรือภาพเขตที่มองไม่เห็นภายในพื้นที่ 3D ผู้เล่น

A far out view of a mansion room. An outline of a box is in the middle of the room to signify the volume that triggers gameplay events.
ความลึกลับของ Duvall Drive ใช้ปริมาณเพื่อเรียกเหตุการณ์ที่เกิดขึ้นในเกมที่เปลี่ยนแปลงรูปลักษณ์ห้อง

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

แอนิเมชัน:

  1. ใน หน้าต่าง Explorer เพิ่มบล็อกส่วนใหม่

  2. แอนิเมชัน

  3. ใน หน้าต่าง Proprieties 1. ตั้ง ชื่อ เป็น AnimationDetector 2. ตั้ง ความโปร่งใส เป็น 1 เพื่อทำให้บล็อกมองไม่เห็น

    An outline of a block is visible around a steam vent to signify the position of the volume.

สร้างสคริป

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

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

เพื่อสร้างสคริปต์ในพื้นที่ที่จะตรวจจับเมื่อตัวละครของผู้เล่นในพื้นที่สัมผัสกับปริมาณ:

  1. ใน หน้าต่าง Explorer เพิ่มสคริปต์ใหม่ไปยัง StartercharacterScripts หน้านี้จะรับรองว่าสคริปและบุตรหลานของมันจะเปลี่ยนเป็นตัวละครผู้เล่นเมื่อพวกเขาเข้าร่วม และ เมื่อพวกเขากลับมา

    1. ขยาย StarterPlayer แล้ววางเมาส์ไว้บนลูกของมัน StarterCharacterScripts แล้วคลิกปุ่ม ⊕
    2. จากเมนู上下컨텍สต์ใส่ 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 = false
    animationDetector.Touched:Connect(function(hit)
    if debounce then
    return
    end
    local hitCharacter = hit:FindFirstAncestorWhichIsA("Model")
    if hitCharacter ~= localCharacter then
    return
    end
    debounce = true
    animationTrack:Play()
    animationTrack.Ended:Wait()
    debounce = false
    end)

สคริปต์ Workspace เริ่มต้นด้วยการรับบริการ Part ซึ่งรวมถึงวัตถุทั้งหมดที่มีอยู่ในโลก 3D นี้ สิ่งนี้สำคัญเพราะสคริปต์ต้องการอ้างอิงวัตถุ 1> Class.Part1> ที่เ

สำหรับแต่ละตัวละครผู้เล่นที่โหลดหรือเกิดใหม่ในประสบการณ์นั้น สคริปต์รอ:

  • เป็นวัตถุ Animation ของลูกของมันซึ่งคุณจะเพิ่มในส่วนถัดไป

  • ตัวละครของ Humanoid และ Animator วัตถุ

  • ตัวอุปกรณ์ระดับเสียงในพื้นที่ชื่อ AnimationDetector เมื่ออะไรสัมผัสกับปริมาณ ตัวแปร Touched จะได้รับค่าบรรพบุรุษต้นกำเนิดที่เป็น Model ซึ่งควรเ

  • ตั้งค่าการเดบาวน์เป็น true

  • เล่นและรอให้แอนิเมชันสิ้นสุด

  • ตั้งค่าการเดบาวน์เบ็งกลับไปที่ false

การตั้งค่าดีบาวน์จาก false เป็น true เป็น false อีกครั้งหลังจากที่อนิเมชันจะเล่นต่อไปได้หลังจากที่อนิเมชันนี้จะไม่เริ่มต้นอีกครั้

เพิ่มแอนิเมชั่น

หากคุณจะทดสอบประสบการณ์ของคุณในขณะนี้, สคริปต์ TriggerAnimation ของคุณยังคงไม่สามารถเล่นอนิเมชั่นในการตอบสนองต่อความสัมพันธ์ของผู้เล่นท้อ

เพื่อเพิ่มแอนิเมชันสำหรับสคริปต์ในเกมที่อ้างอิงจากผู้เล่นที่ชนกับปริมาณ:

  1. ใน หน้าต่าง Explorer เพิ่มการอนิเมชั่นใหม่ใน TriggerAnimation 1. เลื่อนเมาส์ไปที่ TriggerAnimation และคลิกปุ่ม ⊕ 2. จากเมนูบริบทัศน์ ใส่ อนิเมชัน 2. เลือกวัตถุอนิเมชั่นใหม่แล้วในหน้าต่าง คุณสมบัติ ตั้ง AnimationID ไว้ที่คุณต้องการเปิดเมื่อผู้เล่นแตะต้องพื้น โดยปกติ Hazardous Space Station</

  2. ทดสอบประสบการณ์ของคุณเพื่อให้แน่ใจว่าอนิเมชันของคุณจะเล่นเมื่อผู้เล่นอยู่ใกล้กับช่องระบายน้ําแรก