Hendri Prasetyo

Selasa, 29 Desember 2015

On 22.33 by Unknown   No comments


Tutorial kali ini kita akan membahas pembuatan enemy system, setelah di bagian sebelumnya kita telah membuat shooting system untuk player. Buka kembali project yang sudah kita buat. Buat game object kosong dengan nama “Enemies” yang nantinya dalam objek ini akan kita simpan objek-objek musuhnya.

Pada windows ‘Project’ pilih sprites enemy, kemudian drag pada objek Enemies yang sudah kita buat tadi. Untuk objek enemy baru tersebut beri nama ‘Enemy_1′. Kemudian didalam ‘Enemy_1′ tersebut buat kembali sebuah game objek kosong dengan nama ‘Enemy_1_Weapon_1′ untuk menyimpan script shooting pada objek musuh. Pada objek musuh kita menyimpan shooting system nya didalam objek lain yang parent dengan objek ‘Enemy_1′ karena nantinya masing-masing enemy ada yang mempunyai satu atau dua weapon tergantung levelnya. Sehingga hierarchinya seperti berikut :

Selanjutnya, pilih objek ‘Enemy_1′ kemudian tambahkan dua objek standar physics yaitu ‘Polygon Collider’ dan Rigidbody. Set parameternya pada inspector sehingga menjadi seperti berikut :

Kemudian set ordering layer nya menjadi ‘Enemy’. Atau jika Anda belum membuat sorting layernya, pada komponen ‘Sprite Renderer’ pilih Sorting Layer kemudian pilih ‘Add Sorting Layer’.

Buat sorting layer baru dengan nama ‘Enemy’ dan pastikan order nya sesuai dengan sorting layer yang lain. Di tutorial sebelumnya saya sudah bahas kegunaan sorting layer ini, silahkan di cek jika Anda belum mengetahui fungsinya.

Oke, selanjutnya kita membutuhkan Health system untuk masing-masing objek Enemy dan Player supaya nanti bisa terlihat state dimana keduanya destroy ketika masing-masing laser mengurangi HP lawan. Namun itu akan saya bahas menjadi satu part di part selanjutnya saja. Selanjutnya pada bagian 1 kita telah membuat beberapa border pembatas supaya player tidak keluar dari Main Camera, pada objek enemy ini kita juga akan memanfaatkan border tersebut. Singkatnya kita akan membuat enemy movement yang sederhana. Jadi tiap objek enemy nantinya hanya akan bolak balik ke kenan dan ke kiri sampai akhirnya nanti melewati Looper kemudian destroy. Hal yang harus dilakukan terlebih dahulu adalah membuat tag untuk masing-masing border kanan dan kiri :

Pilih objek ‘obs_left” yang sudah kita buat di bagian 1, kemudian lihat inspector pada bagian Tag ganti tagnya menjadi ‘BorderLeft’. Jika belum ada, buat terlebih dahulu Tagnya. Lakukan hal yang sama untuk objek ‘obs_right’. Selanjutnya buat script baru dengan nama ‘EnemyScript.cs’ menggunakan C#, kemudian attach pada objek enemy. Double klik pada script tersebut sehingga monodevelopnya terbuka lalu tambahkan beberapa script berikut :

Pertama kita buat beberapa variabel yang dibutuhkan objek enemy. Kita punya boolean dengan nama ‘enemySpawn’ yang nantinya boolean ini akan mengecek kondisi apakah enemy sudah boleh spawn / berfungsi atau belum. Jika Anda mengikuti tutorialnya dari part pertama, Anda akan tahu bahwa sebenarnya yang bergerak adalah main camera kearah vertical. Sedangkan objek enemy ini berada diluar objek main camera, sehingga pada dasarnya objek enemy tidak bergerak secara vertical. Posisi y enemy kita tentukan sendiri pada scene, sedangkan untuk posisi x nya kita buat random dengan memberi nilai minimal dan maksimal yang kita atur dalam variable ‘posMin’ dan ‘posMax’. Kemudian kita tahu di batas masing-masing camera diberi border sebagai pembatas dan looper. Nah, fungsi spawn disini adalah menentukan kondisi kapan Enemy ini bisa movement dan menembakan laser. Nantinya kita akan set enemy diperbolehkan spawn ketika telah collision dengan border top. Terakhir kita punya boolean juga dengan nama ‘moveRight’, ini hanya inisialisasi saja ketika pertama kali scene dijalankan, masing-masing enemy bergerak kearah kanan atau kearah kiri terlebih dahulu.

Lanjut ke fungsi Start(). Pada start ini pertama kita referens terlebih dahulu berapa weapon yang dimiliki oleh enemy, kemudian disabled pada saat pertama kali scene dijalankan.

Selanjutnya definisikan juga ketentuan speed pada fungsi start. Beri juga nilai random pada speed. Value speed sendiri bisa kita set di inspector sehingga Anda bisa sesuaikan speed nya sesuai kebutuhan. Seperti yang saya bilang tadi, pertama kali enemy akan bergerak kearah kanan atau kiri terlebih dahulu, untuk menentukannya kita juga bisa memanfaatkan fungsi random.

 
Masih pada Start, buat kondisi enemySpawn menjadi false kemudian set posisi x dari masing-masing enemy menggunakan random range dengan nilai minimal dan maksimal yang sudah kita set tadi. Terakhir buat collider masing-masing enemy menjadi triger supaya bisa melewati border top.

Pada FixedUpdate(), fungsi akan menjalankan method Spawn() jika enemySpawn dalam keadaan true. Sekali lagi, enemySpawn akan true hanya bila telah trigger dengan border top.

Pada Spawn() ini hanya berisi movement dari enemy, bagaimana jika ia kekanan dan kekiri. Untuk mengaktifkan laser atau weaponnya kita lakukan pada ontrigger dengan border top, karena jika di set di spawn maka akan dipanggil berkali-kali dan itu bukan good practice.

ObColiisionEnter2D ini berfungsi jika enemy collision dengan objek lain. Jika dengan objek dengan tag BorderLeft, maka ia akan bergerak ke kanan dan begitu juga denga BorderRight. Namun jika collision dengan Player Laser maka healthnya berkurang yang akan kita bahas di part selanjutnya.

Terakhir kita punya fungsi ontriggerenter. Fungsi ini akan kita buat untuk enable spwan seperti mengaktifkan weapon, set trigger false dan set kondisi enemySpawn menjadi true. Klik save kemudian lihat inspector dan assign nilai speed sesuai kebutuhan.


Step selanjutnya tambahkan Weapon Script kedalam objek ‘Enemy_Weapon_1′, jangan lupa centang boolean ‘Is Enemy Weapon’ kemudian Laser prefab nya diisi dengan prefab laser yang baru khusus untuk Enemy. Untuk proses pembuatan lasernya lihat kembali turorialnya di bagian 3.

Hit Play, jika berhasil maka enemy akan bolak-balik kiri kanan sambil menembakan laser.

Jika sudah, buat prefab untuk enemy supaya memudahkan kita jika akan membuat banyak enemy.

Terakhir, perhatikan penempatan posisi Enemy terhadap camera, sebisa mungkin buatlah variasi sesuai kebutuhan Anda, semakin jauh rentang antar enemy dan semakin banyak juga jumlah enemy nya, maka semakin lama juga player menyelesaikan stagenya.

Semoga Bermanfaat :)








0 komentar:

Posting Komentar