คู่มือการใช้งานระดับกลาง

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

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

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

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

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

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

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

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

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

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

เพื่อแสดงให้เห็น ส่วนถัดไปจะสอนคุณวิธีการสลับอนิเมชั่นเดินเริ่มต้นด้วยอนิเมชั่นการเดินวนที่กำหนดเองจาก สร้างอนิเมชั่นตัวละคร โดยใช้กระบวนการเดียวกันนี้ คุณสามารถสลับอนิเมชั่นเริ่มต้นใด ๆ ด้วย 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 สินทรัพย์อนิเมชั่นที่กำหนดเองของคุณ ตัวอย่างเช่น โค้ดตัวอย่างต่อไปนี้อ้างอิงไปยังอนิเมชั่นการเดินวนจาก สร้างอนิเมชั่นตัวละคร.


    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 ทางขวาเพื่อเริ่มการทดสอบการเล่นเกม

      ตัวเลือกทดสอบในเมนูโหมดการทดสอบของ Studio's mezzanine.
    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 นี้ ดูที่ ตรวจจับการชน.

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

หากคุณทดสอบการเล่นเกมของคุณในตอนนี้ สคริปต์ 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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ