PART 2 MEMBUAT GAME PIZZA RUSH Di dalam Part 2 ini kita akan belajar bagaimana membuat game Pizza Rush. Pada bagian ini, tools yang kita gunakan adalah Unity3D. Untuk memprogram game ini kita akan menggunakan bahasa pemrograman C#. Tahapan pengerjaan pembuatan game ini dibagi menjadi 3 yaitu, menyiapkan game object, menulis code, dan test the game. Ada beberapa hal yang perlu diperhatikan dalam membuat game agar performansi game bisa maksimal di semua device/console. Hal hal tersebut antara lain : 1. Texture Dalam membuat game untuk Windows Phone 8, texture yang digunakan harus berukuran maksimal 1024x1024. Jika lebih maka texture tidak akan muncul di dalam game. 2. Draw Calls Draw Calls adalah banyaknya proses yang dilakukan oleh device untuk menampilkan semua object yang tampak di layar. Semakin banyak object dan texture yang digunakan, maka draw calls akan semakin besar. Semakin kecil draw calls maka performansi game akan semakin baik. Untuk platform Windows Phone 8, usahakan jumlah draw calls maksimal 15 – 20 agar game yang kita buat dapat berjalan maksimal di semua device Windows Phone 8. 3. Sound Unity mendukung banyak format audio, namun untuk performansi yang maksimal, format audio yang biasa digunakan adalah wav. Musik dalam game biasanya di ulang terus menerus selama game itu dimainkan. Durasi musik yang digunakan umumnya pendek, biasanya kurang dari 1 menit. File audio yang biasa digunakan di dalam game untuk platform mobile biasanya sudah dikompresi sehingga ukurannya kecil. Hal tersebut sangat berpengaruh dalam penggunaan memori, semakin besar ukuran file audio, maka memori yang digunakan akan semakin besar dan performansi game semakin turun.
Membuat Project Baru 1. Buatlah project baru. Pilih File New Project… Maka akan muncul jendela seperti berikut.
Tentukan lokasi folder, uncheck semua checklist yang ada. Lalu tekan Create. Mengimport Asset 1. Selanjutnya kita akan meng-import asset yang akan digunakan dalam game. Buka folder tempat asset tersebut di simpan menggunakan explorer. Kemudian Drag drop folder tersebut kedalam tab Asset di dalam unity.
Tunggu hingga proses selesai.
Membuat Preferb Selanjutnya, kita akan membuat preferb. Preferb adalah GameObject yang bisa dipakai ulang di dalam game. Untuk lebih lengkapnya, bisa di lihat di situs resmi Unity3D di link berikut : https://docs.unity3d.com/Documentation/Manual/Prefabs.html
Membuat Preferb Map 1. Buka Folder Object 3D di dalam tab Project, lalu drag drop object Map Kedalam tab Heirarchy.
2. Buka folder Materials yang berada di dalam folder Object 3D. Kemudian pada tab project, pilih Create Material. Kemudian beri nama Map
3. Seleksi material Map, kemudian di tab Inspector, pilih Select pada box texture. Lalu pilih Texture-Map.
4. Drag & drop material Map yang tadi dibuat ke atas objek Map di dalam Hierarchy.
5. Buatlah empty game object dengan cara pilih menu GameObject Create Empty. Kemudian ganti nama empty game object tersebut menjadi “MapGenerator”. Nantinya kita akan menambahkan script map generator kedalam empty game object ini.
6. Buatlah object MapGenerator menjadi child dari object Map dengan cara drag & drop object MapGenerator kedalam object Map.
7. Seleksi object MapGenerator, pada tab Inspector lalu ubah posisi nya menjadi X=-196.85 , Y = 0 , Z = 0.
8. Kemudian pilih Tag Add Tag. Lalu isikan “Map”.
9. Setelah itu seleksi lagi object Map, kemudian pada jendela Inspector, ganti tag nya menjadi Map.
10. Selanjutnya kita tambahkan Box Collider kedalam object Map. Seleksi object Map, kemudian pada inspector pilih Add Component Physics Box Collider.
11. Ubah lah propertis Box Collider menjadi Center X= -98.42519,Y= 0, Z=0 Size X= 196.8504, Y=0.1, Z= 11.81102
Sehingga Box Collider berada tepat di jalan pada object Map. 12. Pada tab Project buat folder baru, beri nama Preferbs.
13. Drag & drop object Map dari Hierarchy kedalam folder Preferbs.
14. Selamat! Kamu telah berhasil membuat Preferb Map.
Membuat Preferb Obstacle_1 1. Buka folder Object 3D pada tab Project. Kemudian pilih object Obstacle_1 lalu drag & drop object tersebut ke dalam tab Hierarchy.
2. Seleksi object Obstacle_1 pada Hierarchy, kemudian tambahkan Box Collider dengan cara pilih Add Component Physics Box Collider pada tab Inspector.
3. Centang lah isTrigger yang berada di bawah Box Cillider 4. Buatlah Material pada folder Material pada tab Project. Beri nama “Obstacle”.
5. Seleksi Material Obstacle lalu pada tab inspector pilih Select pada Box Texture. Kemudian pilih Texture-Obstacle.
6. Drag & drop material Obstacle kedalam object Obstacle_1 yang berada di tab Hierarchy.
7. Seleksi object Obstacle_1 kemudian pada tab inspector pilih Tag Add Tag.. Lalu masukkan tag baru dengan nama Obstacle.
8. Seleksi kembali object Obstacle_1 kemudian ganti tag nya menjadi Obstacle.
9. Kemudian drag & drop object Obstacle_1 kedalam folder preferb yang berada di dalam tab Project.
10. Selamat! Kamu sudah berhasil membuat prefer Obstacle_1.
Membuat Preferb Obstacle_2 1. Buka folder Object 3D pada tab Project kemudian drag & drop object Obstacle_2 dari tab Project kedalam tab Hierarchy.
2. Buka Folder Material yang berada di dalam folder Object 3D di tab Project. Kemudian drag drop material Obstacle kedalam object Obstacle_2.
3. Seleksi object Obstacle_2 kemudian pada tab Inspector, ganti tag nya menjadi Obstacle.
4. Masih dengan Obstacle_2 yang terseleksi, tambahkan Box Collider dengan cara pilih Add Component Physics Box Collider pada tab inspector. Lalu ubah propertisnya menjadi Center X=-1.76, Y=0.0571, Z=-5,96; Size X=4.72, Y=0.1533, Z=3.937
5. Centang isTrigger yang berada di bawah Box Collider.
6. Drag & drop object Obstacle_2 dari tab Hierarchy kedalam folder Preferb yang berada di dalam tab Project.
7. Selamat! Kamu telah berhasil membuat preferb Obstacle_2.
Membuat Preferb Coin 1. Buka folder Object 3D yang berada di dalam tab Project. Kemudian drag & drop object Coin dari tab project ke dalam tab Hierarchy.
2. Seleksi Object Coin yang berada di dalam tab Hierarchy. Kemudian di tab Inspector, pilih lah Tag Add Tag.. lalu tambahkan tag Coin.
3. Seleksi Object Coin kemudian ganti Tag nya menjadi coin.
4. Masih dengan Object Coin yang terseleksi, pada tab Inspector, tambahkan Collider dengan memilih Add Component Physics Box Collider.
5. Centang isTrigger yang berada di dibawah Box Collider.
6. Buka lah folder Materials yang berada di dalam folder Object 3D pada tab Project. Buatlah Material baru dengan memilih Create Material. Lalu beri nama “Reward”.
7. Seleksi Material Reward yang tadi dibuat. Lalu pilih Select pada texture kemudian pilih Texture-Reward.
8. Drag & drop material Reward ke dalam object Coin yang berada di Hierarchy.
9. Selanjutnya drag & drop object Coin yang ada di dalam Hierarchy kedalam Folder Preferb.
10. Selamat! Kamu sudah berhasil membuat prefer Coin.
Membuat Preferb Magnet 1. Buka folder Object 3D kemudian drag & drop object Magnet dari tab Project kedalam tab Hierarchy.
2. Seleksi object Magnet yang berada di dalam Hierarchy. Kemudian pada tab Inspector pilih Tag Add Tag.. lalu buat tag baru dengan nama “Magnet”
3. Seleksi object Magnet lalu ganti Tag nya menjadi Magnet.
4. Masih dengan object Magnet yang terseleksi, tambahkan Box Collider dengan cara pilih Add Component Physics Box Collider pada tab Inspector.
5. Buka folder Materials yang berada di dalam folder Object 3D pada tab Project. Kemudian drag & drop material Reward kedalam object Magnet.
6. Seleksi object Magnet yang ada di Hierarchy, kemudian drag & drop object Magnet dari tab Hierarchy ke dalam folder Preferb yang ada di dalam tab Project. 7. Selamat! Kamu sudah berhasil membuat prefer Magnet.
Membuat Preferb Fuel 1. Buka folder Object 3D kemudian drag & drop object Fuel dari tab Project kedalam tab Hierarchy.
2. Seleksi object Fuel yang berada di dalam Hierarchy. Kemudian pada tab Inspector pilih Tag Add Tag.. lalu buat tag baru dengan nama “Fuel”
3. Seleksi object Fuel lalu ganti Tag nya menjadi Fuel.
4. Masih dengan object Fuel yang terseleksi, tambahkan Box Collider dengan cara pilih Add Component Physics Box Collider pada tab Inspector.
5. Buka folder Materials yang berada di dalam folder Object 3D pada tab Project. Kemudian drag & drop material Reward kedalam object Fuel.
6. Seleksi object Fuel yang ada di Hierarchy, kemudian drag & drop object Fuel dari tab Hierarchy ke dalam folder Preferb yang ada di dalam tab Project. 7. Selamat! Kamu sudah berhasil membuat prefer Fuel.
Membuat Preferb PizzaBoy 1. Seleksi object PizzaBoy yang berada di dalam folder Object 3D. Kemudian pada tab Inspector, pilih Tab Model ubah Scale Factor nya menjadi 0.013, kemudian tekan Apply.
2. Kemudial pilih Tab Rig lalu ubah Animation Type menjadi Legacy, kemudian tekan Apply.
3. Setelah itu buka tab Animation. Pilih Clip “Take 001” ubah propertisnya menjadi Nama = “Motor Belok Kiri”; Start = 0; End = 20; Wrap Mode = “Once” kemudian tekan Apply.
4. Kemudian tekan tanda +. Kemudian ganti Nama = “Motor Belok Kanan” ; Start = 20 ; End = 40; Wrap Mode = “Once” Kemudian tekan Apply.
5. Ulangi cara pada langkah ke 4 untuk menambahkan animasi dengan konfigurasi seperti dibawah ini. Nama Animasi
Start End
Wrap Mode
Motor Belok Kiri
0
20
Once
Motor Belok Kanan
20
40
Once
Motor Slide
40
50
Clamp Forever
Motor Lurus
60
80
Ping Pong
Motor Loncat
80
100
Once
Lari
120
159
Loop
Belok Kiri
190
210
Once
Belok Kanan
210
230
Once
Slide
240
250 Clamp Forever
Mati
270
280 Clamp Forever
Loncat
170
190
Once
6. Kemudian drag & drop object PizzaBoy dari tab project kedalam Hierarchy.
7. Seleksi object PizzaBoy pada Hierarchy kemudian tambahkan Rigidbody pada object PizzaBoy dengan cara memilih AddComponent Physics Rigidbody pada tab inspector. Kemudian ubah konfigurasi rigidbody menjadi: Mass = 80, Freeze Rotation X = true, Y=true, Z=true.
8. Masih dengan object PizzaBoy yang terseleksi. Tambahkan Capsule Collider. Dengan cara memilih Add Component Physics Capsule Collider pada tab inspector.
9. Kemudian ubah konfigurasi Capsule Collider menjadi seperti berikut. Center X=0, Y=0.63, Z=0; Raduis = 0.12; Height = 1.3
10. Buka lah folder Materials yang berada di dalam folder Object 3D pada tab project kemudian buatlah material baru di dalam folder tersebut. Seleksi folder, lalu pilih Create Material. Lalu beri nama PizzaBoy.
11. Seleksi Material PizzaBoy, lalu pada tab inspector Select Texture kemudian pilih Texture-PizzaBoy.
12. Expand Object PizzaBoy yang berada di dalam Hierarchy, drag & drop material PizzaBoy kedalam object PizzaBoy di dalam Hierarchy.
13. Drag & Drop pula Material PizzaBoy kedalam object Pizza-Kardus dan Helm yang berada di dalam Tab Scene.
14. Selanjutnya seleksi folder Materials yang berada did dalam folder object lalu buatlah material baru dan beri nama “PizzaScooter”.
15. Kemudian seleksi material PizzaScooter yang tadi dibuat. Didalam tab inspector pilih Select Texture lalu pilih Texture-PizzaScooter.
16. Selanjutnya drag & drop material Pizza Scooter yang tadi dibuat ke dalam object scooter yang berada di dalam tab Scene.
17. Seleksi Object Pizzaboy kemudian ubah tag PizzaBoy menjadi Player.
18. Selanjutnya kita akan membuat object PizzaBoy menjadi prefer. Drag & drop object PizzaBoy yang berada di dalam tab Hierarchy kedalam folder Preferbs yang berada di dalam tab Project.
19. Selamat! Kamu sudah berhasil membuat Preferb PizzaBoy.
Sebelum melanjutkan ke tahap berikutnya, Hapus seluruh object yang berada di Hierarcy. Dengan cara menyeleksi semua object kemudian tekan delete pada keyboard.
Tekan Delete (pada keyboard)
Membuat Preferb Sound 1. Buka folder Sound, lalu seleksi sound Coin. Kemudian uncek 3D Sound pada tab inspector, lalu pilih Apply.
2. Kemudian drag & drop sound Coin keadalam Hierarchy lalu ganti nama nya menjadi “Sound_Coin”.
3. Kemudian drag & drop object Sound_Coin dari Hierarchy ke dalam Folder Preferb.
4. Ulangi 3 Langkah diatas untuk object suara yang lainnya, tambahkan “Sound_” untuk namanya.
5. Selamat! Kamu sudah berhasil membuat preferb Sounds.
Sebelum melanjutkan ke tahap berikutnya, Hapus seluruh object yang berada di Hierarcy. Dengan cara menyeleksi semua object kemudian tekan delete pada keyboard.
Tekan Delete (pada keyboard)
Membuat Preferb Rangkaian_Obstacle Dalam game PizzaRush ini, obstacle yang akan di lalui oleh pemain adalah rangkaian obstacle yang sudah kita rangkai. Kita dapat membuat beberapa rangkaian dan memunculkannya secara random pada saat game dimainkan. Ikutilah langkah langkah berikut untuk membuat rangkaian obstacle, atau kamu bisa mengkreasikan rangkaian obstacle sesuai dengan keinginan kamu. Hal yang harus diperhatikan adalah rangkaian obstacle ini merupakan sebuah Empty Game Object yang mempunyai child berupa preferb obstacle yang telah kita buat diatas dan obstacle generator. Ikuti langkah berikut untuk membuat rangkaian obstacle : 1. Drag & drop preferb Map dari Folder Preferb.
2. Buatlah Empty Game Object dengan cara memilih GameObject Create Empty pada menu bar. Lalu beri nama Rangkaian_Obstacle_1.
3. Setelah itu reset object Rangkaian_Obstacle_1 dengan cara seleksi object Rangkaian_Obstacle_1 kemudian pada inspector pilih
lalu tekan Reset.
4. Kemudian drag & drop Obstacle_1 dari tab project kedalam Rangkaian_Obstacle_1. Sehingga preferb Obstacle_1 menjadi child dari object Rangkaian_Obstacle_1.
5. Selanjutnya drag & drop Obstacle_2 dari tab project kedalam Rangkaian_Obstacle_1 (Rangkaian_Obstacle_1). Sehingga preferb Obstacle_2 menjadi child dari object Rangkaian_Obstacle_1.
6. Double-click pada object Rangkaian_Obstacle_1 agar camera pada scene terpusat pada object Rangkaian_Obstacle_1.
7. Pilih
yang berada di bawah menubar, kemudian atur posisi Obstacle_1
dan Obstacle_2 dengan cara menyeleksi object yang akan di geser kemudian menggesernya dengan menekan panah yang berada di object yang terseleksi. Hingga seperti gambar di bawah ini (atau sesuai kreasi kamu).
Pastikan yang anda geser adalah object Obstacle_1 dan Obstacle_2. Pastikan object Rangkaian_Obstacle_1 tetap berada di posisi 0,0,0. 8. Anda dapat menduplikasi object dengan cara menyeleski object yang akan diduplikasi pada tab Hierarchy, kemudian tekan Ctrl+D atau dengan cara klik-kanan pada object kemudian pilih duplicate. Duplikasi object Obstacle_1 kemudian pindahkan seperti gambar berikut (atau sesuai kreasi kamu).
9. Kamu juga dapat mengubah ukuran obstacle, dengancara menyeleksi obstacle yang akan diubah ukurannya, kemudian ganti scale pada tab inspector.
Lakukan duplikasi untuk object Obstacle_2 di dalam Hierarchy.
Lalu ubah scale-nya di dalam inspector menjadi X=-1, Y=1, Z=1.
10. Selanjutnya Geser object obstacle_2 yang tadi di ubah scalenya, menjadi seperti gambar dibawah ini.
11. Kemudian kamu bisa mengkreasikannya lagi sesuain dengan keinginan kamu. Yang harus diperhatikan adalah berikan jalur yang masuk akal agar player dapat melewati rintangannya dan perhatikan agar semua object obstacle berada di dalam object Rangkaian_Obstacle_1.
12. Setelah kamu puas dengan rangkaian obstacle yang kamu buat, langkah selanjutnya adalah membuat ObstacleGenerator yang merupakan sebuah Empty Game Object. Buatlah Empty Game Object dengan cara pilih GameObject Create Empty pada menu bar. Lalu ganti namanya menjadi “ObstacleGenerator”. Kemudian jadikan child dari object Rangkaian_Obstacle_1 dengan cara drag & drop ObstacleGenerator kedalam Rangkaian_Obstacle_1.
13. Selanjutnya seleksi ObstacleGenerator lalu pada tab Inspector, pilih
lalu
pilih Reset. Kemudian pindahkan posisi ObstacleGenerator ke ujung dari rangkaian obstacle. ObstacleGenerator akan menjadi tempat keluarnya obstacle selanjutnya sehingga posisinya harus pas.
Pastikan posisi Y dan Z dari ObstacleGenerator samadengan 0.
14. Langkah Selanjutnya adalah menjadikan Rangkaian_Obstacle_1 sebagai preferb dengan cara drag & drop object Rangkaian_Obstacle_1 dari Hierarchy kedalam folder Preferb.
15. Selamat! Kamu telah berhasil membuat object Rangkaian_Obstacle_1. Kamu dapat membuat rangkaian obstacle yang lain sebanyak apapun yang kamu mau.
Menyiapkan Scene 1. Pilih File New Scene biarkan scene sebelumnya dihapus dan tidak usah di save. 2. Drag & drop object Map dari folder Preferbs ke dalam Hierarchy. Pastikan Posisi map berada di 0,0,0.
3. Selanjutnya drag & drop object PizzaBoy dari Hierarchy ke dalam Hierarchy. Lalu ubah posisi PizzaBoy menjadi seperti berikut.
4. Expand object PizzaBoy di dalam Hierarchy, kemudian seleksi object Pizza-BoxKardus lalu hapus object tersebut dengan menekan Delete pada keyboard.
Tekan Delete 5. Seleksi object PizzaBoy kemudian pada inspector, pilih Apply.
6. Seleksi object Main Camera kemudian atur posisi dan rotasi Main Camera pada tab Inspector menjadi seperti dibawah ini.
7. Kemudian pada menu bar, pilih GameObject Create Other Directional Light.
8. Seleksi object Directional light kemudian pada tab Inspector, ganti pengaturannya menjadi seperti dibawah ini.
9. Pada tab project, buatlah folder baru, berinama Scenes.
10. Save scene dengan cara memili File Save Scene dan beri nama MainGame simpan dalam folder Scenes.
11. Selamat! Sekarang scene sudah siap.
Membuat Code Pembuatan Code dalam Unity 3D dilakukan secara manual. Bahasa pemrograman yang bisa di pakai adalah C#, JavaScript, dan Boo. Sedangkan, bahasa pemrograman yang akan kita gunakan untuk membuat game ini adalah C#.
Membuat Script PlayerManager.cs Script PlayerManager.cs akan mengatur pergerakan player, pergerakan kamera, perhitungan score, dll. 1. Pertama buatlah folder Scripts.
2. Kemudian buka folder Scripts, lalu buatlah C# Scripts dan beri nama “PlayerManager”.
3. Lalu drag & drop PlayerManager kedalam object PizzaBoy.
Dengan begitu PlayerManager.cs akan mengontrol PizzaBo. 4. Double-click PlayManager.cs kemudian tuliskan script berikut.
4.1 PizzaBoy Bergerak public float kecepatanPlayer; void PergerakanPlayer(){ //step 1 membuat pizzaboy bergerak rigidbody.velocity = new Vector3 (-kecepatanPlayer, rigidbody.velocity.y, rigidbody.velocity.z); }
4.2 Kamera Bergerak public float jarakKamera; void Start () { mainCamera=GameObject.Find("Main Camera"); } void PergerakanKamera(){ mainCamera.transform.position = new Vector3(transform.position.x+jarakKamera, mainCamera.transform.position.y, mainCamera.transform.position.z); }
Membuat Script MapObstacleGenerator.cs
1. Map Generator Untuk membuat map baru pertama tentukan terlebih dahulu jarak antara ujung map dan objeck Pizza Boy, akan berada pada rentang jarak berapa ketika map baru akan dibuat. Buat Script baru (C#) pada folder Scripts kemudian beri nama “MapObstacleGenerator”, lalu drag and drop ke dalam Map Generator di dalam Hirarcy. Tambahkan kode berikut terlebih dahulu:
//membuat variable player untuk menampung GameObject public GameObject player; // Use this for initialization void Start () { //Assgining Game Object PizzaBoy ke variable player player = GameObject.Find ("PizzaBoy"); } // Update is called once per frame void Update () { //print(player.transform.position.x); print(transform.position.x);
//step 3 tentukan jarak antara Map dan Pizza boy sebagai trigger clone Map print(player.transform.position.x-transform.position.x); }
Setelah didapatkan titik untuk Jarak Spawn lalu ubah method Update() menjadi seperti kode berikut ini: //membuat variable player untuk menampung GameObject public GameObject player; public float jarakSpawn; public GameObject[] objectToGenerate; private GameObject objectHasilGenerate;
//print(player.transform.position.x); //print(transform.position.x); //step 3 tentukan jarak antara Map dan Pizza boy sebagai trigger clone Map //print(player.transform.position.x-transform.position.x); //step 4 jika jarak player(pizzaboy) dan map kurang dari jarakSpawn Clone map if(player.transform.position.x-transform.position.x < jarakSpawn){ //Step 5.1 mengecek hasil generate Map agar tidak terjadi redundant generate map if(!objectHasilGenerate){ //step 5 menggunakan fungsi Instantiate untuk clone Map dan didaftarkan sebagai variable GameObject objectHasilGenerate objectHasilGenerate = Instantiate(objectToGenerate[Random.Range(0,objectToGenerate.Length)],transform.p osition,Quaternion.identity) as GameObject; } } //step 6 destory Game Object Map jika sudah tidak digunakan if(player.transform.position.x-transform.position.x<-50){ Destroy(transform.parent.gameObject); }
Pada Inspector Map Generator isikan jarak Spawn= 50 dan pada variable Object To Generate isikan Size= 1 lalu pilih Element 0=Map.
1.1 Mengatur posisi dan pergerakan player Pizza Boy Beralih kedalam Script PlayerManager tambahkan kode berikut pada method PergerakanPlayer() //step 8 membuat tipe data enum untuk posisi player public enum Posisi {
kiri, tengah, kanan } //step 9 membuat variabel playerPosisi untuk enum public Posisi playerPosisi; public float posisiZPlayer; private float targetPosisiZPlayer; //step 7 merubah posisi player (Z Position) transform.position = new Vector3(transform.position.x, transform.position.y, posisiZPlayer); //step 10 kondisi input untuk posisi Z Player, menerima input dari method PlayerGeser if(playerPosisi == Posisi.kiri){ targetPosisiZPlayer = -1.5f; } if(playerPosisi == Posisi.kanan){ targetPosisiZPlayer = 1.5f; } if(playerPosisi == Posisi.tengah){ targetPosisiZPlayer = 0; } //Step 11 memberikan input ke variable posisiZPlayer dari input targetPosisiZPlayer //Time: adalah waktu yang dimilki unity sendiri ketika running program posisiZPlayer = Mathf.MoveTowards(posisiZPlayer,targetPosisiZPlayer,6 * Time.deltaTime);
Buat method PlayerGeser() kemudian tambahkan koder berikut ini: void PlayerGeser(string input){ if(input=="kiri"){ if(playerPosisi == Posisi.kiri){ playerPosisi = Posisi.kiri; }else if(playerPosisi == Posisi.kanan){ playerPosisi = Posisi.tengah; }else if(playerPosisi == Posisi.tengah){ playerPosisi = Posisi.kiri; } }else if(input=="kanan"){ if(playerPosisi == Posisi.kiri){ playerPosisi = Posisi.tengah; }else if(playerPosisi == Posisi.kanan){ playerPosisi = Posisi.kanan; }else if(playerPosisi == Posisi.tengah){ playerPosisi = Posisi.kanan; } } }
Buat method InputKeyboard() lalu tambahkan kode berikut ini: //step 12 method untuk integrasi dengan keyboard void InputKeyboard(){ if(Input.GetKeyDown(KeyCode.LeftArrow)){ PlayerGeser ("kiri"); //step 17 menambahkan Animasi animation.Play("Motor Belok Kiri"); } else if(Input.GetKeyDown(KeyCode.RightArrow)){ PlayerGeser ("kanan"); animation.Play("Motor Belok Kanan"); } }
Jangan lupa tambahkan method InputKeyboard() di dalam method Update(), lalu klik play pastikan pergerakan player sudah sesuai dengan input keyboard. 1.2 Object Pizza Boy Loncat Tambahkan kode berikut ini pada PlayerGeser(): public float tinggiLoncat; //variable untuk mengecek posisi udara PizzaBoy, default true public bool diTanah;
//step 13 Menambahkan fungsi loncat pada object PizzaBoy else if(input=="loncat"){ if(diTanah){ rigidbody.velocity = new Vector3(rigidbody.velocity.x,tinggiLoncat,rigidbody.velocity.z); diTanah = false; } }
Tambahkan kode berikut pada method InputKeyboard() else if(Input.GetKeyDown(KeyCode.UpArrow)){ PlayerGeser("loncat"); animation.Play("Motor Loncat");
}
Untuk cek apakah object Pizza Boy sudah menyentuh tanah atau belum tambahkan kode berikut ini: //step 15 OnCollisionEnter fungsi bawaan UNITY untuk dipanggil setelah rigidbody/collider menyentuh rigidbody/collider lain void OnCollisionEnter(Collision other){ if(other.transform.tag == "Map"){ diTanah = true; } }
Klik “Play” pastikan object Pizza Boy sudah dapat melompat secara sesuai. 1.3 Membuat Scoring Masih didalam Script PlayerManager tambahkan Method berikut ini: //variable dengan type GUIText untuk scoreText (step 16) public float score; public float multipler; public GUIText scoreText;
//Step 16 membuat Scoring //Scoring model 1 /*void OnGUI(){
score += multipler * Time.deltaTime; GUI.Label (new Rect (Screen.width * 0.1f, Screen.height * 0.1f, 600, 100),score.ToString("F0")); }*/ //Scoring model 2 //1. membuat Component GUIText di Scene //2. Tambahkan jenis font //3. embed GUIText Score ke prefeb PizzaBoy void Scoring(){ score += multipler * Time.deltaTime; scoreText.text = score.ToString("F0"); }
Jangan lupa tambahkan method Scoring () pada method update().
1.4 Menambahkan Efek pantulan (Bounce). Pada folder Assets “klik kanan > Create > Physic Material” lalu ketikan bounce, isikan nilai bounciness=0.5. Kembali ke Object Pizza Boy, pada Capsule Collider pilih “Material > Bounce”.
Berikut ini adalah kode keseluruhan dari Script PlayerManager.cs dan MapObstaclegenerator.cs: PlayerManager.cs using UnityEngine; using System.Collections; public class PlayerManager : MonoBehaviour {
public float kecepatanPlayer; //variable kamera dibuat agar posisi kamera di belakang Object Pizza Boy (tidak FPS) public float jarakKamera; public GameObject mainCamera; public float posisiZPlayer; private float targetPosisiZPlayer; public float tinggiLoncat; public float score; public float multipler; //variable dengan type GUIText untuk scoreText (step 16) public GUIText scoreText; //step 8 membuat tipe data enum untuk posisi player public enum Posisi { kiri, tengah, kanan } //variable untuk mengecek posisi udara PizzaBoy, default true public bool diTanah; //step 9 membuat variabel playerPosisi untuk enum public Posisi playerPosisi; // Use this for initialization void Start() { mainCamera = GameObject.Find("Main Camera"); } // Update is called once per frame void Update() { PergerakanPlayer(); PergerakanKamera(); InputKeyboard(); Scoring(); } void PergerakanPlayer() { //step 1 membuat pizzaboy bergerak rigidbody.velocity = new Vector3(-kecepatanPlayer, rigidbody.velocity.y, rigidbody.velocity.z); //step 7 merubah posisi player (Z Position) transform.position = new Vector3(transform.position.x, transform.position.y, posisiZPlayer); //step 10 kondisi input untuk posisi Z Player, menerima input dari method PlayerGeser if (playerPosisi == Posisi.kiri) { targetPosisiZPlayer = -1.5f;
} if (playerPosisi == Posisi.kanan) { targetPosisiZPlayer = 1.5f; } if (playerPosisi == Posisi.tengah) { targetPosisiZPlayer = 0; } //Step 11 memberikan input ke variable posisiZPlayer dari input targetPosisiZPlayer //Time: adalah waktu yang dimilki unity sendiri ketika running program posisiZPlayer = Mathf.MoveTowards(posisiZPlayer, targetPosisiZPlayer, 6 * Time.deltaTime); } void PlayerGeser(string input) { if (input == "kiri") { if (playerPosisi == Posisi.kiri) { playerPosisi = Posisi.kiri; } else if (playerPosisi == Posisi.kanan) { playerPosisi = Posisi.tengah; } else if (playerPosisi == Posisi.tengah) { playerPosisi = Posisi.kiri; } } else if (input == "kanan") { if (playerPosisi == Posisi.kiri) { playerPosisi = Posisi.tengah; } else if (playerPosisi == Posisi.kanan) { playerPosisi = Posisi.kanan; } else if (playerPosisi == Posisi.tengah) { playerPosisi = Posisi.kanan; } } //step 13 Menambahkan fungsi loncat pada object PizzaBoy else if (input == "loncat") { if (diTanah) { rigidbody.velocity = new Vector3(rigidbody.velocity.x, tinggiLoncat,
rigidbody.velocity.z); diTanah = false; //step 14 menambahkan components Capsule Collider dengan material bounce pada Object PizzaBoy } } } //step 12 method untuk integrasi dengan keyboard void InputKeyboard() { if (Input.GetKeyDown(KeyCode.LeftArrow)) { PlayerGeser("kiri"); //step 17 menambahkan Animasi animation.Play("Motor Belok Kiri"); } else if (Input.GetKeyDown(KeyCode.RightArrow)) { PlayerGeser("kanan"); animation.Play("Motor Belok Kanan"); } else if (Input.GetKeyDown(KeyCode.UpArrow)) { PlayerGeser("loncat"); animation.Play("Motor Loncat");
} } //step 15 OnCollisionEnter fungsi bawaan UNITY untuk dipanggil setelah rigidbody/collider menyentuh rigidbody/collider lain void OnCollisionEnter(Collision other) { if (other.transform.tag == "Map") { diTanah = true; } } void PergerakanKamera() { //step 2 membuat kamera bergerak mainCamera.transform.position = new Vector3(transform.position.x + jarakKamera, mainCamera.transform.position.y, mainCamera.transform.position.z); } //Step 16 membuat Scoring //Scoring model 1 /*void OnGUI(){
score += multipler * Time.deltaTime; GUI.Label (new Rect (Screen.width * 0.1f, Screen.height * 0.1f, 600, 100),score.ToString("F0")); }*/ //Scoring model 2 //1. membuat Component GUIText di Scene //2. Tambahkan jenis font //3. embed GUIText Score ke prefeb PizzaBoy void Scoring() { score += multipler * Time.deltaTime; scoreText.text = score.ToString("F0"); } }
MapObstacleGenerator.cs using UnityEngine; using System.Collections; public class MapObstacleGenerator : MonoBehaviour { //membuat variable player untuk menampung GameObject public GameObject player; public float jarakSpawn; public GameObject[] objectToGenerate; private GameObject objectHasilGenerate; // Use this for initialization void Start() { //Assgining Game Object PizzaBoy ke variable player player = GameObject.Find("PizzaBoy"); } // Update is called once per frame void Update() { //print(player.transform.position.x); //print(transform.position.x); //step 3 tentukan jarak antara Map dan Pizza boy sebagai trigger clone Map //print(player.transform.position.x-transform.position.x); //step 4 jika jarak player(pizzaboy) dan map kurang dari jarakSpawn Clone map if (player.transform.position.x - transform.position.x < jarakSpawn) { //Step 5.1 mengecek hasil generate Map agar tidak terjadi redundant generate map if (!objectHasilGenerate)
{ //step 5 menggunakan fungsi Instantiate untuk clone Map dan didaftarkan sebagai variable GameObject objectHasilGenerate objectHasilGenerate = Instantiate(objectToGenerate[Random.Range(0, objectToGenerate.Length)], transform.position, Quaternion.identity) as GameObject; } } //step 6 destory Game Object Map jika sudah tidak digunakan if (player.transform.position.x - transform.position.x < -50) { Destroy(transform.parent.gameObject); } } }
Menambahkan backsound game Pada Hirarcy Project klik “Game Object > Create Empty”, ubah namanya menjadi “Backsound”. Pada Object BackSound yang terseleksi pilih “Add Component > Audio > Audio Source”, selanjutnya pilih Audio Clip “Musik_Game”
Menambahkan sound motor loncat Pada Script PlayerManager tambahkan kode berikut ini: public AudioClip[] audioClip; void PlaySound(int clip){ audio.clip = audioClip[clip]; audio.Play(); }
Pada Object Pizza Boy pilih “Add Component > Audio Source”, lalu masih pada Object Pizza Boy pada Player Manager Script pilih Audio Clip “Motor Loncat”.
1. Nb : Kamu dapat menggunakan preferb CoinGenerator dari dalam folder Preferbs kedalam Rangkaian Obstacle, sehingga kamu dapat membuat koin yang berjajar melengkung atau lurus dengan cepat dan rapih. Kamu sudah berhasil membuat game Pizza Rush. Untuk membuat game kamu lebih medarik dan menantang, buatlah beberapa rangkaian obstacle dengan tingkat kesulitan yang lebih sulit. Jangan lupa untuk menambahkan CoinGenerator dan Magnet agar game kamu menjadi lebih menarik.