วันเสาร์ที่ 29 สิงหาคม พ.ศ. 2558

[Unity 2D] สร้างเกมง่ายๆ Tappy Plane ตอนที่ 5 : Animator และ Mecanim

เปิดหน้าต่าง Animator

ไปที่ Window -> Animator
จะได้หน้าต่างการทำงานหน้าตาแบบนี้

ทำความรู้จักกับ Animator Controller

Animator Controller ทำหน้าที่จัดการแอนิเมชั่นของตัว Game Object นั้นๆ โดยที่ Animator Controller สามารถมีได้หลายแอนิเมชั่นคลิป

จะเห็นว่า Game Object Plane ประกอบไปด้วย Component ที่เรียกว่า Animator โดยมี Asset ที่ชื่อว่า Plane ซึ่ง Plane เป็น Animator Controller
ให้คลิกที่ไฟล์ Plane ที่เป็น Animator Controller จะเห็นว่าหน้าต่าง Animator จะแสดงแอนิเมชั่นที่ Animator Controller ควบคุมอยู่ขึ้นมา

เนื่องจากตอนที่แล้วที่เราได้สร้างแอนิเมชั่นให้ Game Object Plane ขึ้นมา 2 แอนิเมชั่น ได้แก่แอนิเมชั่น Fly และแอนิเมชั่น Die เราจึงเห็นว่าใน Animator มีกล่องสี่เหลี่ยมๆที่มีชื่อเดียวกันกับแอนิเมชั่นที่เราได้สร้างไว้เมื่อตอนที่แล้ว
เมื่อคลิกไปที่กล่องสี่เหลี่ยมๆจะเห็นว่าที่ Motion จะอ้างอิงไปยังแอนิเมชั่นคลิปนั่นเอง จะเห็นได้ว่ากล่องเหลี่ยมๆนี้ไม่ใช่แอนิเมชั่นแต่เป็นตัวอ้งอิงถึงแอนิเมชั่น กล่องเหลี่ยมๆพวกนี้คือ State ใน Mecanim นั่นเอง

Mecanim

Mecanim คือตัวประสานงานระหว่างฝั่งแอนิเมชั่นและฝั่ง Code โดยจะใช้ Parameters เป็นตัวกลางในการสื่อสาร

กำหนดดีฟอลต์แอนิเมชั่น

จากรูปเมื่อกดรันเกมจะเห็นว่า 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 ขึ้น

สร้าง 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 จะแสดงแอนิเมชั่นตายให้เห็น
ในตอนหน้าเราจะมาเริ่มเขียนโปรแกรมการเคลื่อนที่ให้เครื่องบินกัน
ตอนที่ 7 : จัดการกล้องให้ติดตามเครื่องบิน

ไม่มีความคิดเห็น:

แสดงความคิดเห็น