unity 3d tutorial part 2 v2
TRANSCRIPT
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-Box-
Kardus 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.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); }
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.