Tutorial Unity - Game Lari Sampe Capek - IMedia9 - Connecting Inspiration

Breaking

Tuesday, January 21, 2014

Tutorial Unity - Game Lari Sampe Capek


Halo apa kabar semuanya? Ada yang kangen sama gue? Nggak ada. Ya sudah, ga jadi deh bikin tutorialnya *pundung*. Suatu hari ada mahasiswa yang nanya sama gue: "Pak, bapak kok ganteng banget?" Err.. tunggu, bukan gitu nanyanya. Kalao nggak salah nanyanya "Pak, gimana caranya bikin game endless run?" maksudnya, bikin ala Ninja Rush yang lari nggak berenti-renti tapi versi 3Dnya. Terus gue jawab, "bikinnya gampang kok, tinggal klik, drag dan koding. Beres!" *gubrak!*
Ini beneran loh. Lo nggak percaya? Sini gue buktiin. Langkah pertama untuk bisa bikin game lari dengan terrrain nggak abis2 itu adalah bikin project baru pake Unity. Bisa kan?


Import Terrain Asset dengan cara klik kanan di panel Assets, terus klik Import Package -> Terrain Assets, import juga Skyboxes sekalian.


Pasang skybox dengan cara klik Render -> Render Setting dan pilih Sunny Skybox, biar rada "mencrang" suasana gamenya.


Tambahin 1 Terrain dengan cara klik GameObject -> Create Other -> Terrain.


Pasangin Texture pada Terrain dengan cara klik Terrain di tab Hierarchy, klik Paint Texture (tombol yang ada gambar kuas), klik Edit Texture dan pilih Grass. Kenapa mesti Grass? Karena ini tutorial gue yang bikin dan elo kudu nurut! Titik!


Selanjutnya ganti nama Terrainnya jadi Terrain1. Kenapa harus Terrain1? Kan tadi gue udah bilang ini tutorial gue yang bikin? Nurut ajalah! Janganlah engkau menjadi anak yang durhaka hanya gara-gara baca tutorial dari internet. Serius! Ehm. Nah, untuk memudahkan penglihatan, coba deh di sekitar tengah2 Terrain lo naikkin gunungnya dikit-dikit pakai tombol Raise/Lower Terrain. Biar kayak arena rally paris jogja gitu!


Terus tambahin Terrain ke 2, caranya sama kayak sebelumnya. Pas pertama kali di klik, pasti numpuk dengan Terrain pertama, gapapa. Nggak usah panik. Atur aja nilai Z ada panel transform dengan -2000. Kenapa mesti -2000? Nah, kalao ini bener lo kudu nanya. Secara default, Terrain dalam Unity ukurannya 2000 x 2000. Jadi kalau gue mau bikin Terrain panjang ke bawah, terrain yang 1 posisi Z = 0, sedangkan yang 1 lagi Z = -2000. Soalnya kalau Z = 2000 jadinya ada di depannya. Terus kalao Z = 1000 jadinya ada separuh terrain yang saling tumpang tindih. Sedangkan kalau Z = 1500 itu namanya NAWAR! Dan gue sekarang lagi bikin tutorial bukan lagi jualan!  *entah kenapa gue kalao bikin tutorial Unity suka pengin emosi mulu, hehehe*


Untuk ngebedain terrain yang satu dengan yang lain, lo tambahin deh texture tanah untuk terrain yang kedua dan bikin juga bukit2an di bagian tengahnya. Biar keren!



Selanjutnya tambahin "matahari" alias Directional Light supaya caang. Sama kok, pakai menu GameObject dan Create Other -> Directional Light.




Langkah selanjutnya adalah bikin karakter. Sebenernya gue pengin nambahin karakter Kiky si Kancil untuk tutorial ini. Tapi karena Kiky si kancil sedang istirahat jadi kita pake karakternya khas Unity aja, Si Tukang Bangunan. Caranya klik kanan di panel Assets -> Import Package -> Character Controller.

Tarik prefab si tukang bangunan ke atas Terrain terserah di mana aja, tapi kalau bisa rada di tengah2 pegunungan. Iya gue tau, tadi gue bilang terserah. Tapi maksud gue itu, terserah cuma di tengah2 gunung! Di tengah-tengahanya terserah kitu. Ngerti nggak sih lo?


Waktu jaman-jamannya Unity 3 dulu, karakter tukang bangunan bisa langsung dipakai, tapi sekarang mesti di atur animasinya dulu nih. Nggak tahu juga kenapa. Pokoknya, animasi yang hilang lo lengkapi dulu.

Setelah itu klik Run, dan cobalah berlari. Oh ya, lo juga bisa atur Run Speed-nya si tukang bangunan dengan 200 agar ia bisa berlari secepat ferrari.


Selesai. Selamat malam. Hah? Kok cuman gitu doang? Hmmm, kayaknya ada yang lupa deh. Oh ya, script untuk Terrainnya. Kalo cuman gini sih, anak SD juga bisa bikin! Yang sulit adalah scriptnya. Karena itu membutuhkan ketelitian, dan kesabaran, hehehe. Oke! Tambahin sebuah script, gue bisanya C# jadi tambahin aja itu.


Dobel klik scriptnya sampe masuk MonoDevelop, terus ketik nih, scriptnya di bawah. Copy paste ajalah, kalao males ngetik mah.

1:  using UnityEngine;  
2:  using System.Collections;  
3:  public class Laripagi : MonoBehaviour {  
4:   public float TerrainWidth = 2000;  
5:   public float TerrainHeight = 2000;  
6:   public Terrain[] Terrains;   
7:   public GameObject MainCharacter;  
8:   public int UnlimitedIndex, CurrTerrainIndex, NextTerrainIndex;  
9:   public float CenterCompare, TerrainCompare;  
10:   public Vector3 NextTerrainPosition;  
11:   // Use this for initialization  
12:   void Start () {  
13:   UnlimitedIndex = 0;  
14:   CurrTerrainIndex = 0;  
15:   NextTerrainIndex = CurrTerrainIndex + 1;  
16:   }  
17:   // Update is called once per frame  
18:   void Update () {  
19:   CenterCompare = (TerrainWidth/2) + (UnlimitedIndex * TerrainHeight);  
20:   TerrainCompare = Terrains[CurrTerrainIndex].transform.position.z + TerrainHeight;  
21:   if (MainCharacter.transform.position.z >= CenterCompare){  
22:    UnlimitedIndex++;  
23:    NextTerrainPosition = Terrains[CurrTerrainIndex].transform.position;  
24:    NextTerrainPosition.z = (UnlimitedIndex) * TerrainHeight;  
25:    Terrains[NextTerrainIndex].transform.position = NextTerrainPosition;  
26:   }  
27:   if (MainCharacter.transform.position.z >= TerrainCompare){  
28:    CurrTerrainIndex++;  
29:    if (CurrTerrainIndex > Terrains.Length-1){  
30:    CurrTerrainIndex = 0;  
31:    }  
32:    NextTerrainIndex++;  
33:    if (NextTerrainIndex > Terrains.Length-1){  
34:    NextTerrainIndex = 0;  
35:    }  
36:   }  
37:   }  
38:  }  

Habis itu pasang tuh scriptnya di si tukang bangunan. Tinggal di tarik aja kok.


Dan terakhir, atur beberapa variabel public yang gue bikin. Pertama jumlah Terrain, untuk contoh ini kasih 2 dan tarik aja semua Terrain itu bersesuaian dengan namanya. Dan untuk variabel Main Character lo bisa tarik prefab si tukang bangunan.


Ide dari script ini sederhana. Intinya, ia akan mendeteksi posisi karakter utama (si tukang bangunan), kalau ia berada di posisi separuh + 1 dari terrain yang sekarang diinjek, maka terrain paling belakang akan dipasang jauh di depan. Begitu seterusnya, sehingga terrain seolah nggak habis-habis. Padahal terrian yang ada dari belakang cuma di pindahin ke depan. Udah gitu doang. Bagian scriptnya bisalah lo pelajari sendiri, pokoknya ini cara gue, mungkin masih banyak cara yang lain.


Silahkan dicoba deh. Seharusnya sampai ntar subuh karakter si tukang bangunan itu bakalan lari terus dan nggak nyampe2 ke tujuan.  Sekian dulu ah tutorial dari gue. Semoga bermanfaat,

No comments:

Post a Comment