Thursday, May 7, 2015

Navigation Mesh pada Unity Engine

Navigation mesh adalah salah satu fitur yang ada pada unity yang digunakan untuk melakukan pathfinding, yaitu fitur untuk melakukan pencarian jalan secara otomatis untuk memudahkan programmer sebagai pengganti dari metode algoritma A*.
Cara untuk menggunakan navigation mesh, pertama kita harus melakukan bake pada menu Window>Navigation, pada gameobject yang mau kita jadikan wilayah untuk dilakukan pencarian, game object harus dalam mode static





 Setelah melakukan bake(dalam contoh pada sebuat cube besar) maka akan terlihat warna biru seperti berikut, yang artinya NavMesh sudah tergenerate dengan benar.
Langkah-langkah tadi adalah bertujuan untuk melakukan prekalkulasi path, bagi yang melakukan explorasi(misalkan player) agar dapat memanfaatkan navmesh maka player sebagai game object harus memiliki komponen Nav Mesh Agent


Berikan Script PlayerController seperti berikut pada game object player

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {
    private Vector3 targetPosition;
    private NavMeshAgent navMeshAgent;
    void Awake() {
        navMeshAgent = GetComponent<NavMeshAgent>();
    }
    void Update() {
        //melakukan raycast pada tile melalui mouse untuk menentukan posisi tujuan player
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit, 100)) {
            Debug.Log(hit.point);
            targetPosition = hit.point;
        }

        //menggunakan navmeshagent untuk menentukan arah jalan dari player untuk mencapai tujuan
        navMeshAgent.SetDestination(targetPosition);
        transform.position = transform.position + navMeshAgent.desiredVelocity * Time.deltaTime;
    }
}



Lakukan hover pada lantai menggunakan mouse selama game berjalan, navMeshAgent akan menentukan arah berjalan yang harus dilalui.


No comments:

Post a Comment