Dalam sebuah game akan terasa tidak lengkap jika player tidak memiliki lawan. Untuk itu hampir dalam semua game pasti ada suatu karakter yang digerakkan oleh komputer AI yang berfungsi sebagai lawan atau teman. Sebut saja game sederhana pac-man, pasti tidak akan seru atau bahkan belum bisa disebut game jika karakter mirip cumi-cumi yang selalu menjadi lawan pemain dihilangkan. Oleh karena itu keberadaan karakter AI menjadi sangat penting bagi sebagian game.
Gambar game Pacman
Seiring berkembangnya waktu manusia mulai membuat karakter AI yang semakin baik. Dahulu kala karakter AI dari sebuah game mungkin hanya bersifat sangat minim seperti musuh pacman yang hanya bertugas mengikuti lawan. Namun saat ini seiring berjalannya waktu karakter AI seringkali dilengkapi berbagai algoritma tertentu sehingga seakan-akan player merasa kalau lawan mainnya benar-benar bisa berpikir layaknya manusia.
Pada artikel ini saya akan sedikit membahas bagaimana cara membuat sebuah karakter AI yang sangat simpel dan hanya bertugas untuk mengejar obyek yang menjadi target. Tidak ada algoritma tertentu disini bahkan tidak dapat menemukan jalur terdekat untuk mengejar obyek. Algoritma AI ini bisa sobat terapkan untuk membuat game-game shooter sederhana seperti Alien Shooter. Bahkan mungkin bagi sebagian orang hal ini masih belum dapat disebut sebagai AI, namun apalah namanya itu tidaklah penting, yang penting bagaimana sobat bisa memahami bagaimana algoritma membuat obyek yang dapat mengikuti obyek lain secara smooth di unity. Ok langsung saja kita mulai langkah-langkahnya.
Alat, bahan, dan skill yang diperlukan :
- Unity yang sudah terinstall di PC sobat
- Kemampuan dasar untuk menggunakan Unity seperti membuat objek, transformasi obyek seperti translate, rotate, dsb. Kalo sobat belum tahu dasar unity mari silahkan mampir ke artikel saya sebelumnya tentang kumpulan link tutorial gamedev. Silahkan belajar dari salah satu link di bagian Unity Basic.
1. Buat karakter
Pertama buat dulu karakter sesuai selera. Bisa yang simple-simple aja atau import dari model 3D lain. Kalau saya sendiri bikin karakter dari bentuk dasar sederhana, capsule sebagai badan dan cylinder sebagai hidung. Untuk membuat obyek klik Game Object >> Create other >> pilih obyek yang diinginkan. Gambar di bawah adalah karakter milik saya, sedikit aneh sih tapi lumayan daripada nggak.
2. Buat arena
Arena diperlukan untuk landasan bagi obyek-obyek dalam game. Arena dapat dibuat menggunakan terrain, namun kali ini saya hanya menggunakan cube biasa yang saya atur ukurannya dan saya beri texture terrain
Selain arena, tentu akan lebih bagus jika diberikan effect cahaya. Tambahkan directional light untuk memberi efek cahaya seperti matahari.
3. Buat script untuk AI
Setelah bentuk karakter dan arena telah siap maka saatnya untuk memberikan script pada karakter. Disini saya buat C# script dengan nama kelas AICharacterBehaviour
Adapun isi dari script tersebut adalah sbb :
using UnityEngine;
using System.Collections;
public class AICharacterBehaviour : MonoBehaviour {
public GameObject target; //target yang dikejar
public float movingSpeed = 2f; //kecepatan berpindah
public float turnSpeed = 0.05f; //kecapatan berbelok
void Update() {
Vector3 gapPosition = target.transform.position - this.transform.position; //Gap antara posisi AI dengan target
gapPosition = new Vector3(gapPosition.x, 0, gapPosition.z); //Nilai gap y dibuat 0 agar AI mengabaikan posisi atas dan bawah (Y) dari target dan hanya mengikuti arah ke kanan dan ke kiri (X dan Y)
Quaternion lookRotation = Quaternion.LookRotation(gapPosition); //Rotasi untuk look atau melihat target
this.transform.rotation = Quaternion.Lerp(this.transform.rotation, lookRotation, turnSpeed); //Membuat rotasi berubah secara smooth menggunakan fungsi lerp dari rotasi awal ke rotasi tujuan lookRotasion
this.transform.Translate(Vector3.forward * movingSpeed * Time.deltaTime); //Bergerak maju
}
}
setelah script dibuat maka langkah selanjutnya adalah mengimplementasikan script pada karakter. Lakukan drag drop script ke karakter
4. Buat karakter target / player yang digerakkan user
Setelah karakter AI jadi maka kita buat target yang dikejar. Target ini nantinya dapat digerakkan oleh user melalui keyboard. Pada tutorial ini karakter target saya buat kubus dan saya beri C# script PlayerBehaviour.
Adapun isi dari scriptnya PlayerBehaviour dalah sbb
using UnityEngine;
using System.Collections;
public class PlayerBehaviour : MonoBehaviour {
public float movingSpeed = 15; //kecepatan bergerak
void Update () {
//Jika keyboard di tekan
if (Input.GetKey(KeyCode.LeftArrow))
this.transform.Translate(Vector3.left * movingSpeed * Time.deltaTime, Space.World);
else if(Input.GetKey(KeyCode.RightArrow))
this.transform.Translate(Vector3.right * movingSpeed * Time.deltaTime, Space.World);
else if (Input.GetKey(KeyCode.UpArrow))
this.transform.Translate(Vector3.forward * movingSpeed * Time.deltaTime, Space.World);
else if (Input.GetKey(KeyCode.DownArrow))
this.transform.Translate(Vector3.back * movingSpeed * Time.deltaTime, Space.World);
}
}
Selanjutnya tinggal implementasi kedalam karakter dengan drag & drop
5. Uji coba
Untuk melakukan ujicoba kita pasang dulu target ke dalam script AI agar target dikejar. Tinggal lakukan drag & drop saja
Kemudian terakhir atur kameranya sedemikian rupa agar viewnya nyaman
Jadi deh... Silahkan di play dan lihat sendiri apa yang terjadi. Untuk menggerakkan player tinggal tekan panah atas bawah kanan dan kiri. Untuk hasil jadinya saya lampirkan di link dibawah. Jika menemui masalah silahkan komen saja.
Mungkin cukup sekian artikel kali ini, mohon maaf jika ada salah kata, semoga bermanfaat dan terus berkarya. ^^
DOWNLOAD PROJECT: http://www.4shared.com/zip/9Mtzs2vR/Simple_AI.html
BACA JUGA :
Pencarian rute menggunakan algoritma A* dengan library arongranberg
mas kalo cara bikin objek seperti manusia gmn ya caranya
ReplyDeletemohon bantuannya
email : reijie@yahoo.com
Maaf lama untuk membalas... Sudah lama tidak membuka blog dikarenakan sibuk tugas akhir. Objek manusia atau bentuk-bentuk lain dapat dibuat menggunakan software-software 3D modeling seperti 3ds max, blender, maya, dsb, yang kemudian di import di Unity. Mungkin Anda perlu membaca artikel saya ini http://duniadigit.blogspot.com/2013/12/cara-import-model-3d-blend-ke-unity.html
ReplyDeletemas mau nanyak kalok mau buat game edukasi menggunakan Al bisa g ya mass
Deletedanangajiss@gmail.com
Mas kalau source code php Shortest path A* punya?
ReplyDeleteWah sayangnya gapunya :D
Deletesaya kan udah buat charakter robot lewat unyti terus di apakan mas?
ReplyDeleteLho mau diapain emangnya? Di animasikan aja.. Nanti tinggal tambah script ini sudah bisa jalan
Deleteom download aplikasinya dmna..?
ReplyDeleteLha ini sudah saya kasi link
Deletehttp://adf.ly/4285862/simple-ai-project
Gak bisa ta?
mas supaya karakter yg kita buat tidak tembus ke objek lain itu gmana ya bkin script C# nya?? makasih sbelumnya
ReplyDeleteDi kasih collider aja. Component >> Physycs/Physics2D >> collider yang diinginkan
DeleteGan diperkuliahan jg diajarin unity y.klo y jurusan apa ? Thanx
Deletemas mau nanya saya kan belajar membuat game jebakan gitu, lha untuk musuhnya biar datangnya acak/random gmn caranya mas?
ReplyDeleteWah kurang mengerti saya maksudnya. Kalo fungsi random coba dengan Random.Range(minVal, maxVal)
Deletemas saya sudah berhasil gerakkan player... tapi AI nya ngejar cuma ke tempat awal player. jadi setelah player saya pindah AI nya tidak mengejar lagi.... solusinya mas ya,,,
ReplyDeletemas biar ai nya ngejar player terus caranya gmana?
ReplyDeletesaya berhasil gerakkan objek player. sementara objeknya AI ngejar ke tempat awal saja. tidak mengikuti player pas pindah tempat. mohon solusinya mas...?
kk minta petunjuk + alat untuk program + bikin karakter manusia nya
ReplyDeleteEmail: bayupram1997@gmail.com
Kalo mau banyak target gimana gan ? misalnya dia makan sekumpulan koin dan setelah koin nya habis dia ngejar player nya ?
ReplyDeletemas, mau tanya dong cara agar carakter seperti manusia tapi yang di gerakin hanya tangannya aja untuk mengikuti arah kursot ke button bagaimana iya?? mohon bantuannya iya mas. :)
ReplyDeletekalo biar keluar di pc bisa gak. maksud saya biar bisa buat ngerjain hal" lain.
ReplyDeletemas.. kalau mengembalikan posisi objek seperti semula gimana?
ReplyDeleteMas kalau musuh nya di klik, playernya ke lokasi musuh...gmna caranya?
ReplyDeletepermisi, mas. ini codingnya buat sendiri atau ada referensinya? hehe
ReplyDeleteatau mungkin masnya udah nemuin kalo ini sudah ada nama algoritmanya hehhe
min misalnya buat AI yang bisa menangkap suara/menjalankan perintah dengan suara misalnya bukan folder tertentu gimana caranya?
ReplyDelete>///<
ReplyDeleteMas itu yang bahasa indonesia di script nya juga di tulis dalam bahasa indo apa gimana?
ReplyDelete