ตัวอย่างสำหรับ Unity 5.3 ในการใช้งาน Navigation และ Pathfinding กำหนดเส้นทางให้ Game Object เดินไปตามเส้นทางในรูปแบบของ Navigation Agent อย่างง่าย
เป็นตัวอย่างที่ปรากฏใน Document ของ Unity ตัวใหม่อยู่แล้ว ว่า Unity นั้นแถมระบบ Navigation และ Path Finding สร้าง AI Movement เดินไปมาใน ฉากของเราที่ถูกสร้างในรูปแบบของ Mesh อยู่แล้วได้อย่างง่ายๆ
เก่อนอื่นเราต้องมี Model ฉากของเราที่เป็น Mesh Object อยู่แล้วผมได้ทำการสร้างโมเดล 3 มิติในโปรแกรม Blender ไว้ Export ออกเป็น .FBX ไปใช้กับ Unity ได้เลยครับ
นำไปวางใน Project ของ Unity ได้เลย
ต่อมาให้เรา นำตัวละครที่เราต้องใช้เป็น Navigation Agent หรือตัว AI ที่จะให้เดินไปมาตามเส้นทางมาวางไว้ใน Mesh ของ ฉากที่เราสร้างขึ้นผมใช้ Flog จากเกม Crossy Road มาใช้
คลิกที่ Object Mesh ของฉากหรือพื้นที่กบจะต้องเดินไปที่เมนู Windows -> Navigation เราจะมีหน้าจอการกำหนด Navigation ขึ้นมา
หน้าต่างในการกำหนดการตั้งค่าเป็นดังนี้
กดปุ่ม Bake แล้วรอดูผลลัพธ์การคำนวณเส้นทางจากพื้นผิวของโมเดล
ระบบจะทำการสร้าง Navigation สีน้ำเงินขึ้นมาตามพื้นผิวที่ใกล้เคียงกับพื้นสำหรับทางเดินให้อัตโนมัติเราสามารถตั้งค่าใหม่ให้เหมาะสมได้ให้ทำการ Bake ใหม่ทุกครั้ง
ต่อมาให้เราสร้าง Flog หรือ GameObject ที่จะให้เคลื่อนที่นั้นเป็น Nav Mesh Agent หรือ Navigation Agent เสียก่อนให้คลิกที่เจ้าตัวละครของเรา เลือก Add Component -> Navigation -> Nav Mesh Agent ใน Inspector ครับ
เราจะเห็นแล้วว่าเจ้าตัวละครของเราก็จะกลายเป็น Nav Mesh Agent เรียบร้อยแล้ว ให้เราสร้างไฟล์ C# ขึ้นมาใหม่ชื่อว่า Pathfinding.cs
โดย Script ของไฟล์ Pathfinding.cs นั้นจะประกอบไปด้วย
using UnityEngine; using System.Collections; public class Pathfinding : MonoBehaviour { public Transform goalObject; void Start () { NavMeshAgent navAgent = GetComponent<NavMeshAgent>(); navAgent.destination = goalObject.position; } }
เป็นการสร้าง Target เป็น Transform ขึ้นมาชื่อว่า goalObject
public Transform goalObject;
แล้วกำหนดให้ตัว Nav Mesh Agent เดินไปยังตำแหน่งของ goalObject ผ่านเส้นทางที่กำหนดใน Navigation ที่
NavMeshAgent navAgent = GetComponent<NavMeshAgent>(); navAgent.destination = goalObject.position;
ให้เราสร้าง Object ปลายทางโดยสร้าง Cube ขึ้นมาหนึ่งชิ้น
นำเจ้าCube ที่สร้างขึ้นมาใหม่นี้ไปสร้างเป็น goalObject ของคลาส Pathfinding.cs ที่เจ้าตัวละครของเรา
ทำการทดสอบเกมของเราโดยการ Run ตัวเกม
จะเห็นว่า Unity นั้นได้มีระบบคำนวณเส้นทางของพื้นที่โมเดลในฉากออกเป็น Pathfinding ให้กับการสร้างเส้นนำทางเพื่อสร้างระบบ AI ได้ง่ายๆติดมากับเวอร์ชันล่าสุดของโปรแกรม
ส่วนนี่ไฟล์วีดีโอทดสอบผลลัพธ์
ลองเอาไปทำดูนะครับ หรือจะศึกษาใน Doc ของ Unity เพิ่มเติมก็ได้ครับ