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

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

การเล่นอนิเมชันตัวละคร เป็นส่วนสำคัญที่ทำให้ตัวละครและตัวละครที่ไม่สามารถเล่นได้ (NPCs) มีความแสดงออก สมจริง และน่าสนใจต่อผู้ชมของคุณ นอกจากการให้ภาพที่ดื่มด่ำแล้ว อนิเมชันตัวละครยังให้ข้อเสนอแนะแก่ผู้เล่นจากการกระทำของพวกเขา คำแนะนำเกี่ยวกับวิธีการนำทางในสภาพแวดล้อม และข้อมูลสำคัญเกี่ยวกับตัวละครของพวกเขาและตัวละครอื่น ๆ

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

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

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

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

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

อนิเมชันการตกเริ่มต้น
อนิเมชันการว่ายน้ำเริ่มต้น
อนิเมชันการปีนเริ่มต้น

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

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

อนิเมชันการเดินเริ่มต้น
อนิเมชันการเดินที่กำหนดเอง

สร้างสคริปต์

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

ในการสร้างสคริปต์ที่จะอ้างอิง ID สินทรัพย์อนิเมชันเริ่มต้น:

  1. ในหน้าต่าง Explorer ให้เพิ่มสคริปต์ใหม่ไปที่ ServerScriptService

    1. เลื่อนเมาส์ไปที่ ServerScriptService และคลิกที่ปุ่ม ⊕
    2. จากเมนูบริบท ให้แทรก Script
  2. ในสคริปต์ใหม่ ให้วางโค้ดต่อไปนี้:

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("พบ Animator!")
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

สคริปต์ ResetDefaultAnimations เริ่มต้นด้วยการดึงบริการ Players ซึ่งประกอบด้วยวัตถุ Player ทั้งหมดสำหรับผู้เล่นเมื่อพวกเขาเชื่อมต่อกับเซิร์ฟเวอร์ เมื่อแต่ละตัวละครของผู้เล่นโหลดเข้าสู่เกม ฟังก์ชัน onCharacterAdded จะรอจนกว่าจะตรวจพบวัตถุ Humanoid และ Animator ของตัวละคร

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

เปลี่ยน ID สินทรัพย์

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

ตารางต่อไปนี้ประกอบด้วยอนิเมชันตัวละครเริ่มต้นทั้งหมดที่คุณสามารถเรียกใช้และเปลี่ยนภายในวัตถุ Animator โปรดทราบว่า Idle มีสองรูปแบบที่คุณสามารถตั้งโปรแกรมให้เล่นบ่อยขึ้นหรือน้อยลงได้

การกระทำของตัวละครการอ้างอิงสคริปต์อนิเมชัน
วิ่งanimateScript.run.RunAnim.AnimationId
เดินanimateScript.walk.WalkAnim.AnimationId
กระโดดanimateScript.jump.JumpAnim.AnimationId
Idle

animateScript.idle.Animation1.AnimationId
animateScript.idle.Animation2.AnimationId

ตกanimateScript.fall.FallAnim.AnimationId
ว่ายน้ำ

animateScript.swim.Swim.AnimationId

ว่ายน้ำ (Idle)

animateScript.swimidle.SwimIdle.AnimationId

ปีนanimateScript.climb.ClimbAnim.AnimationId

เพื่อเปลี่ยน ID สินทรัพย์อนิเมชันการเดินเริ่มต้น:

  1. เรียกใช้การอ้างอิงสคริปต์อนิเมชันการเดินเริ่มต้น จากนั้นเปลี่ยน ID สินทรัพย์ด้วย ID สินทรัพย์อนิเมชันที่กำหนดเองของคุณ ตัวอย่างเช่น โค้ดตัวอย่างต่อไปนี้อ้างอิงถึงอนิเมชันการเดินจาก Create Character Animations.

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    print("พบ Animator!")
    local animateScript = character:WaitForChild("Animate")
    animateScript.walk.WalkAnim.AnimationId = "rbxassetid://122652394532816"
    end
    local function onPlayerAdded(player)
    player.CharacterAdded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  2. ทดสอบเกมของคุณเพื่อให้แน่ใจว่าอนิเมชันการเดินที่กำหนดเองของคุณเขียนทับอนิเมชันเริ่มต้น

    1. เลือก Test จากเมนูแบบเลื่อนลงและคลิกที่ปุ่ม Play ที่อยู่ข้างๆ เพื่อเริ่มการทดสอบการเล่น

      ตัวเลือกทดสอบในเมนูการทดสอบแบบเลื่อนลงของ mezzanine ของ Studio.
    2. เดินไปรอบ ๆ สถานีอวกาศด้วยอวตารของคุณ

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

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

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

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

แทรกปริมาตร

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

มุมมองที่ห่างไกลของห้องในแมนชั่น เส้นขอบของกล่องอยู่กลางห้องเพื่อบ่งบอกถึงปริมาตรที่เรียกใช้งานเหตุการณ์การเล่นเกม
The Mystery of Duvall Drive ใช้ปริมาตรเพื่อเรียกใช้งานเหตุการณ์การเล่นเกมที่เปลี่ยนลักษณะทางกายภาพของห้อง

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

ในการแทรกปริมาตรรอบการรั่วไหลของไอน้ำที่จะเรียกใช้อนิเมชัน:

  1. ในหน้าต่าง Explorer ให้เพิ่มบล็อกพาร์ทใหม่
  2. วางตำแหน่งและปรับขนาดบล็อกจนกว่าจะครอบคลุมพื้นที่ที่คุณต้องการเรียกใช้อนิเมชัน
  3. ในหน้าต่าง Properties,
    1. ตั้งค่า Name เป็น AnimationDetector

    2. ตั้งค่า Transparency เป็น 1 เพื่อทำให้บล็อกมองไม่เห็น

      เส้นขอบของบล็อกมองเห็นได้รอบช่องระบายไอน้ำเพื่อบ่งบอกถึงตำแหน่งของปริมาตร

สร้างสคริปต์

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

ตัวอย่างเช่น เทคนิคอนิเมชันนี้ใช้ 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)

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

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

  • วัตถุ Animation ของมัน ซึ่งคุณจะเพิ่มในส่วนถัดไป
  • วัตถุ Humanoid และ Animator ของตัวละคร
  • วัตถุปริมาตรในพื้นที่ทำงานที่ชื่อว่า AnimationDetector

เมื่อใดก็ตามที่มีการชนกับปริมาตร ฟังก์ชันจัดการเหตุการณ์ Touched จะได้รับอนุญาตให้เข้าถึงบรรพบุรุษแรกที่เป็น Model ซึ่งควรจะเป็นตัวละครหาก BasePart ที่ชนกับปริมาตรเป็นลูกหลานของโมเดลตัวละคร หากเป็นเช่นนั้น ฟังก์ชันจะตรวจสอบว่ามันเป็นตัวละครของผู้เล่น ท้องถิ่น หรือไม่ หากเป็นเช่นนั้น ฟังก์ชันจะ:

  • ตั้งค่า debounce เป็น true
  • เล่นและรอให้อนิเมชันสิ้นสุด
  • ตั้งค่า debounce กลับเป็น false

การตั้งค่า debounce จาก false เป็น true และกลับไปเป็น false อีกครั้งหลังจากอนิเมชันเล่นจบเป็นรูปแบบ debounce ที่ป้องกันไม่ให้อนิเมชันถูกเรียกใช้อย่างต่อเนื่องเมื่อผู้เล่นชนกับปริมาตรอย่างต่อเนื่อง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบ debounce นี้ โปรดดูที่ Detect collisions.

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

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

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

  1. ในหน้าต่าง Explorer ให้เพิ่มอนิเมชันใหม่ไปที่ TriggerAnimation

    1. เลื่อนเมาส์ไปที่ TriggerAnimation และคลิกที่ปุ่ม ⊕
    2. จากเมนูบริบท ให้แทรก Animation
  2. เลือกวัตถุอนิเมชันใหม่ จากนั้นในหน้าต่าง Properties ตั้งค่า AnimationID เป็น ID สินทรัพย์อนิเมชันที่คุณต้องการเรียกใช้เมื่อผู้เล่นสัมผัสปริมาตร ตัวอย่างเช่น ตัวอย่าง Hazardous Space Station อ้างอิงถึง rbxassetid://3716468774 เพื่อเล่นอนิเมชันของตัวละครที่ตกลงไปข้างหลัง

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

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