Hai guys, hari ini kita akan belajar mengenai Cara Membuat Karakter Patroli di Unity. Bagi yang belum tahu apa itu Unity, Unity adalah salah satu game engine yang sering dipakai oleh game developer 3D maupun 2D. Salah satu alasan Unity banyak dipakai untuk game developer adalah dapat dipakai secara gratis, meskipun dengan fasilitas yang terbatas. Nah, sekarang langsung saja ke materi. Untuk membuat sebuah karakter dapat berpatroli, setidaknya kita harus memiliki rute patroli dan dapat menggerakkan karakter tersebut melalui rute tersebut. Jika tanpa menggunakan Unity, kita harus memikirkan tentang algoritma path finding dan translasi objek. Dalam Unity terdapat suatu fitur khusus yang dapat mempermudah melakukan itu semua, yaitu Navigation.

Oke guys, kita langsung mulai aja. Pertama buka Unity nya terlebih dulu. Disini saya menggunakan Unity 2017.1.

Nanti keluar kotak dialog seperti dibawah. Isikan nama project sesuka kalian, letakkan juga di folder yang mudah diingat. Jangan lupa pilih yang 3D. Lalu klik Create Project.

Setelah itu buat daratannya dengan cara klik kanan pada kotak Scene terus pilih 3D Object > Plane.

Setelah itu buat karakternya, cukup dengan kapsul sederhana untuk mewakili karakternya. Caranya klik kanan ditempat yang sama pilih 3D Object > Capsule.

Setelah itu atur posisi karakter di atas Plane yang tadi dibuat. Agar karakter memiliki rigid body, klik karakter yang tadi dibuat lalu lihat pada kotak Inspector. Klik Add Component, ketikkan Rigidbody terus klik Rigidbody bukan Rigidbody2D.

Setelah itu kita akan membuat area patroli. Saya kali ini cukup dengan membuat area sederhana dengan kubus. Cara membuat kubus adalah klik kanan di tempat yang ditunjukkan gambar di bawah ini. Lalu pilih 3D Object > Cube.

Untuk mengubah bentuk maupun ukuran benda di Unity dapat menggunakan toolbar dibawah yang terletak di pojok kiri atas jendela Unity.

Setelah itu atur sesuai selera kalian, saya kali ini mengatur seperti dibawah ini. Itu dilihat dari atas. Diusahakan celah antar kotak tidak terlalu kecil agar bisa dilewati karakter.

Kemudian kita lakukan fase pertama dalam Navigation and Pathfinding, yaitu membuat NavMesh. NavMesh adalah area yang digunakan karakter untuk menuju tujuan yang ditentukan. Jika belum terdapat kotak seperti dibawah ini, pilih menu Window > Navigation. Caranya adalah pastikan permukaan bawah kotak yang tadi dibuat menyentuh bagian Plane yang tadi dibuat. Setelah dipastikan menyentuh atau menembus sedikit, pilih Plane yang telah dibuat. Kemudian menuju ke kotak Navigation tab Object. Atur seperti gambar dibawah ini, Walkable dipilih karena diatur agar dapat dilalui oleh karakter.

Setelah itu, pindah ke tab Bake. Atur seperti gambar dibawah ini, Agent Radius adalah jari jari tubuh karakter. Setelah itu klik Bake. Sekarang lihat pada tampilan Scene akan terlihat daeraj warna biru, itu lah yang disebut NavMesh. Jika disuruh untuk menyimpan Scene, simpan saja dengan nama terserah kalian. NavMesh ini belum 100 % benar karena masih menembus tembok yang tadi dibuat. Untuk itu lanjut ke langkah berikutnya.

Kali ini klik tembok yang kalian buat, lalu menuju Navigation tab Object. Lalu atur seperti gambar di bawah ini. Kali ini kita pilih Not Walkable, karena kita membuat agar tembok tidak bisa dilewati. Setelah itu, menuju tab Bake  klik Bake. Lakukan ini pada semua tembok yang kalian buat.

Setelah sukses melakukan langkah di atas, lihat pada tampilan Scene. Akan muncul warna biru namun sudah tidak melewati tembok.

Setelah selesai membuat NavMesh, lanjut membuat spot patroli. Caranya adalah dengan klik kanan di daerah yang ditunjukkan gambar di bawah lalu pilih Create Empty.

Biar kelihatan, klik Object yang tadi dibuat lalu menuju Inspector. Kemudian pilih ikon yang sesuai. Contohnya seperti gambar dibawah ini.

Buat spot patroli di setiap persimpangan yang mungkin dilalui. Setelah selesai membuatnya berikut adalah tampilan yang saya buat.

Setelah itu, kita mulai melakukan coding untuk mengatur perjalanan si karakter. Kita mulai dengan membuat C# Script. Caranya adalah klik kanan di daerah yang ditunjuk oleh gambar dibawah ini, kemudian pilih Create > C# Script. Beri nama Patrol.

Setelah itu buka C# Script tersebut. Kemudian ketikkan kode dibawah ini. Untuk keterangannya sudah tertulis pada kode tersebut.

 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

//Ini diperlukan untuk menggunakan NavMesh

using UnityEngine.AI;

 

public class Patrol : MonoBehaviour {

 

    //Array yang digunakan untuk menampung patrolPost yang telah dibuat

    public Transform[] patrolPost;

 

    //integer yang digunakan untuk menampung index Array patrolPost

    private int destination;

 

    //untuk menampung character yang mencari jalan (lebih sering disebut Agent)

    private NavMeshAgent agent;

 

     // Use this for initialization

     void Start () {

 

        //menginisiasi agent

        agent = GetComponent();

 

        //digunakan agar agent tidak berhenti ketika sampai di patrolPost

        agent.autoBraking = false;

 

        //menuju patrolPost selanjutnya

        GoToNextPoint();

     }

    

     // Update is called once per frame

     void Update () {

         

        //jika jarak character dengan patrolPost < 0.5

        if(!agent.pathPending && agent.remainingDistance < 0.5f)

        {

            //menuju point selanjutnya

            GoToNextPoint();

        }

 

     }

 

    //method untuk mengatur titik selanjutnya

    void GoToNextPoint()

    {

        //jika tidak ada patrolPost yang dituju

        if(patrolPost.Length == 0)

        {

            //berhenti

            return;

        }

 

        //mengatur tujuan agent pada posisi patrolPost

        agent.destination = patrolPost[destination].position;

 

        /*mengatur nilai destination

         * disini menggunakan mod karena untuk berjalan infinit

         * misal untuk finit cukup menggunakan (destination + 1)

         * namun nanti akan error disaat mencapai patrolPost.Length +1

         * karena tidak ada objek yang dituju

         * untuk mengkaver itu harus diatur pada if diatas

         */

        destination = (destination + 1) % patrolPost.Length;

 

    }

}

 

Setelah itu, kembali ke Unity. Kali ini pilih karakter yang tadi dibuat. Lalu drag and drop C# script yang telah dibuat ke dalam Inspector si karakter. Seperti terlihat dibawah ini. Field Size diisi dengan jumlah pos patroli yang telah dibuat. Kemudian drag and drop masing-masing pos patroli ke samping tulisan Element. SATU POS SATU TEMPAT, biar tidak ada kesalahan program dalam menginterpretasikannya.

Sekarang sudah tercipta karakter yang bisa berpatroli. Nah mungkin sekian dulu tutorial dari saya, semoga bermanfaat dan tetap semangat. INFORMATIKA !! JAYA!!!

Bingung tentang sourcecode atau pemrograman yang ingin dipelajari? TANYA DI SINI
Bingung cari modul, soal, pembahasan mata kuliah? CARI DI SINI