เปิดหน้าต่าง Animator
ไปที่ Window -> Animatorจะได้หน้าต่างการทำงานหน้าตาแบบนี้
ทำความรู้จักกับ Animator Controller
Animator Controller ทำหน้าที่จัดการแอนิเมชั่นของตัว Game Object นั้นๆ โดยที่ Animator Controller สามารถมีได้หลายแอนิเมชั่นคลิป
ให้คลิกที่ไฟล์ Plane ที่เป็น Animator Controller จะเห็นว่าหน้าต่าง Animator จะแสดงแอนิเมชั่นที่ Animator Controller ควบคุมอยู่ขึ้นมา
เนื่องจากตอนที่แล้วที่เราได้สร้างแอนิเมชั่นให้ Game Object Plane ขึ้นมา 2 แอนิเมชั่น ได้แก่แอนิเมชั่น Fly และแอนิเมชั่น Die เราจึงเห็นว่าใน Animator มีกล่องสี่เหลี่ยมๆที่มีชื่อเดียวกันกับแอนิเมชั่นที่เราได้สร้างไว้เมื่อตอนที่แล้ว
เมื่อคลิกไปที่กล่องสี่เหลี่ยมๆจะเห็นว่าที่ Motion จะอ้างอิงไปยังแอนิเมชั่นคลิปนั่นเอง จะเห็นได้ว่ากล่องเหลี่ยมๆนี้ไม่ใช่แอนิเมชั่นแต่เป็นตัวอ้งอิงถึงแอนิเมชั่น กล่องเหลี่ยมๆพวกนี้คือ State ใน Mecanim นั่นเอง
Mecanim
Mecanim คือตัวประสานงานระหว่างฝั่งแอนิเมชั่นและฝั่ง Code โดยจะใช้ Parameters เป็นตัวกลางในการสื่อสาร
หลายๆคนอาจจะสงสัยว่าทำไมถึงเล่นแอนิเมชั่น Fly ก่อน? คำตอบก็คือเพราะว่า Fly เป็นดีฟอลต์แอนิเมชั่น สังเกตได้จาก State Fly เป็นสีส้ม
เราสามารถเปลี่ยนดีฟอลต์แอนิเมชั่นได้โดยการคลิกขวาที่ State ที่เราต้องการให้เป็นดีฟอลต์แอนิเมชั่นจากนั้นเลือก Set As Layer Default State จะเห็นว่า State นั้นจะเปลี่ยนเป็นสีส้มแทน
แต่ในโปรเจคนี้เราต้องการให้ Fly เป็นดีฟอลต์แอนิเมชั่น ดังนั้นอย่าลืมเซ็ตกลับไปเหมือนเดิมด้วยหละ
กำหนดดีฟอลต์แอนิเมชั่น
จากรูปเมื่อกดรันเกมจะเห็นว่า State Fly มีหลอดสีฟ้าๆวิ่งอยู่ หมายความว่าในขนาดนี้ Game Object Plane กำลังเล่นแอนิเมชั่น Fly อยู่หลายๆคนอาจจะสงสัยว่าทำไมถึงเล่นแอนิเมชั่น Fly ก่อน? คำตอบก็คือเพราะว่า Fly เป็นดีฟอลต์แอนิเมชั่น สังเกตได้จาก State Fly เป็นสีส้ม
เราสามารถเปลี่ยนดีฟอลต์แอนิเมชั่นได้โดยการคลิกขวาที่ State ที่เราต้องการให้เป็นดีฟอลต์แอนิเมชั่นจากนั้นเลือก Set As Layer Default State จะเห็นว่า State นั้นจะเปลี่ยนเป็นสีส้มแทน
แต่ในโปรเจคนี้เราต้องการให้ Fly เป็นดีฟอลต์แอนิเมชั่น ดังนั้นอย่าลืมเซ็ตกลับไปเหมือนเดิมด้วยหละ
สร้าง Transition
Transition คือเส้นที่ใช้เชื่อมต่อระหว่าง State ในโปรเจคนี้เราต้องการให้เครื่องบินๆเรื่อย และจะเปลี่ยนมาเล่นแอนิเมชั่นตายเมื่อมีการชนสิ่งกีดขวาง ดังนั้นเราจะสร้างเส้น Transition จาก State Fly ไป State Die
โดยให้ทำการคลิกขวาที่ State Fly เลือก Make Transition จะเห็นว่ามีเส้นเกิดขึ้น จากนั้นให้คลิกที่ State Die จะเกิดการเชื่อม Transition ขึ้น
โดยให้ทำการคลิกขวาที่ State Fly เลือก Make Transition จะเห็นว่ามีเส้นเกิดขึ้น จากนั้นให้คลิกที่ State Die จะเกิดการเชื่อม Transition ขึ้น
สร้าง Parameters
อย่างที่กล่าวไปแล้วว่า Parameters เป็นตัวกลางในการสื่อสาร ในโปรเจคนี้เราจะทำการสร้าง Parameter ขึ้นมาค่าหนึ่งเพื่อเป็นตัวกลางบอกว่าเครื่องบินตายแล้ว
ในหน้าต่าง Animation ทางด้านซ้ายมือบน ให้คลิกที่ Parameters จากนั่นคลิกที่เครื่องหมายบวก จะมีป๊อปอัพแสดงชนิดของ Parameters ในโปรเจคนี้จะใช้ Bool และตั้งชื่อ Parameter นี้ว่า IsDead และเซ็ทค่าดีฟอลต์ของ Paremeter IsDead ให้เป็น False (ไม่ต้องติ๊กถูก)
หมายความว่าถ้าเครื่องบินยังบินอยู่ IsDead จะเป็น False แต่ถ้าเครื่องบินมีการชนเกิดขึ้น ทางฝั่ง Code จะเซ็ทค่า IsDead ให้เป็น True
กำหนด Condition ให้ Transition
การเปลี่ยน State จะเกิดขึ้นเมื่อมีเงื่อนไขอะไรสักอย่าง ในที่นี้คือเมื่อ IsDead เป็น True จะเกิดการเปลี่ยนจาก State Fly เป็น State Die โดยการกำหนด Condition ให้ Transitionเพื่อเป็นตัวบอกเงื่อนไขนั้นๆ
วิธีการกำหนด Condition ให้คลิกที่เส้น Transition ระหว่าง State Fly และ State Die ที่หน้าต่าง Inspector จะแสดงรายละเอียดของเส้น Transition จากนั้นที่แถบ Condition ให้เลือก Parameter เป็น IsDead และเซ็ทค่าให้เป็น true
ทดสอบ Mecanim ที่สร้าง
กดรันเกมและเซ็ทค่าให้ Parameter IsDesd ให้เป็น True จะเห็นว่าหลอดสีฟ้าๆวิ่งจาก State Fly มา State Die และที่หน้าต่าง Game จะแสดงแอนิเมชั่นตายให้เห็น
ในตอนหน้าเราจะมาเริ่มเขียนโปรแกรมการเคลื่อนที่ให้เครื่องบินกัน
ตอนที่ 1 : Overview
ตอนที่ 2 : เริ่มต้นสร้างโปรเจ็ค และจัดเตรียม resources
ตอนที่ 3 : รู้จักกับ Game Object และ Scene
ตอนที่ 4 : สร้างแอนิเมชั่นให้เครื่องบิน
ตอนที่ 5 : Animator และ Mecanim
ตอนที่ 2 : เริ่มต้นสร้างโปรเจ็ค และจัดเตรียม resources
ตอนที่ 3 : รู้จักกับ Game Object และ Scene
ตอนที่ 4 : สร้างแอนิเมชั่นให้เครื่องบิน
ตอนที่ 5 : Animator และ Mecanim
ไม่มีความคิดเห็น:
แสดงความคิดเห็น