Cara Membuat Game Ular Tangga Dengan Unity #3 (Tipuan Terakhir) - IMedia9 - Connecting Inspiration

Breaking

Thursday, December 1, 2016

Cara Membuat Game Ular Tangga Dengan Unity #3 (Tipuan Terakhir)


Bagian terakhir dari pembuatan boardgame-boardgame-man menggunakan Unity ini adalah bagaimana membuat mekanisme player menaiki tangga atau menuruni Ular. Bagi anda yang baru tune in, dimohon untuk terlebih dahulu membaca artikel ini:
Cara Membuat Game Ular Tangga Dengan Unity #3 Cara Membuat Game Ular Tangga Dengan Unity #3 Cara Membuat Game Ular Tangga Dengan Unity #3 Cara Membuat Game Ular Tangga Dengan Unity #3 Cara Membuat Game Ular Tangga Dengan Unity #3 Cara Membuat Game Ular Tangga Dengan Unity #3 Cara Membuat Game Ular Tangga Dengan Unity #3 Cara Membuat Game Ular Tangga Dengan Unity #3 Cara Membuat Game Ular Tangga Dengan Unity #3 Cara Membuat Game Ular Tangga Dengan Unity #3
Bagaimana Membuat Board Game Di Unity? Dan untuk artikel Part 1, barangkali ada yang ketinggalan bisa membaca di sini: Boardgame Unity Part 1 sedangkan untuk artikel Part 2 bisa anda baca di sini: Boardgame Unity Part 2 Pada tutorial kali ini saya akan memberikan sebuah tipuan akhir yang bisa digunakan pada game jenis ular tangga. Penasaran? Oke. Ayo kita lanjutkan! Sampai akhir kemarin, posisi boardgame kita sudah seperti ini. Para player sudah dapat bergerak sesuai dengan angka pada dadu.
  Cara Membuat Game Ular Tangga Dengan Unity #3

Tutorial ini hanya akan membahas pembuatan 1 buah mekanisme yaitu Tangga yang terletak pada kotak Nomor 3 dan akan berakhir pada kotak Nomor 21. Bagian ini memang rada sulit untuk digeneralisasi, karena setiap board pasti akan berbeda komposisinya. Nah, langkah pertama adalah membuat sebuah Cube baru yang akan dijadikan acuan Trigger.
  boardgame03

Tempatkan Cube tersebut di kotak Nomor 3

boardgame04
Untuk memudahkan pemahaman saya coba ganti dulu nama dari Cube ini menjadi Tangga1-Awal. Ini nama sementara loh ya. Karena tipuan pada tutorial ini adalah justru terletak pada penggunaan nama sebuah GameObject.

boardgame05
Logika dasar dari pergerakan player antara 2 titik itu sebenarnya sama saja yaitu berpindah dari 1 tranform ke transform lain, atau kalau menggunakan cube sebagai perumpaan, yaitu dari Tangga1-Awal ke Tangga1-Akhir
  boardgame06

Jadi kalau disederhakan kira-kira bentuk pergerakannnya seperti ini. Anda setuju?
  boardgame07

Tapi ada satu hal yang perlu anda perhatikan. Bukanlah BOARDGAME kita ini sudah ada Cubenya? Coba perhatikan artikel2 sebelumnya. Seluruh kotak boardgame kita sudah memiliki cube termasuk posisinya. Jadi ngapain mesti bikin lagi 2 cube 'hanya' untuk perpindahan tambahan antara 1 titik ke titik lain gara-gara 'tangga' atau 'ular'?
  boardgame08

Sebenarnya yang kita perlukan hanyalah "Trigger" kapan si player harus naik tangga dan kapan harus turun lewat ular. Dan naik/turunnya itu KEMANA? Nah, disinilah tipuannya. Daripada bikin 2 Cube untuk bikin mekanisme seperti ini, buat saja 1 buah Cube yang memiliki nama tujuan akhir dari pergerakan. Contoh dalam tutorial ini adalah si Cube diberi nama Go=21. Artinya, si player akan dipaksa pergi ke kotak dengan nomor array 21 yang berarti adalah kotak nomor 22. Sebagai tambahan untuk memudahkan deteksi, si Cube ini juga diberi Tag = Tangga, diberi komponen Rigidboy dan hilangkan Gravitasinya.

boardgame09
Untuk melengkapi tipuan hilangkan centang Mesh Renderer.
  boardgame10

Selanjutnya update script Player.cs sebagai berikut:
1:  using UnityEngine;  
2:  using System.Collections;  
3:  public class Player : MonoBehaviour {  
4:       public GameObject RedPlayer;  
5:       public GameObject BluePlayer;  
6:       public GameObject Dadu;  
7:       public GameObject[] Plat;  
8:    public int RedPlayerPos, BluePlayerPos, CounterPos, TargetPos;  
9:    public bool RedPlayerMove, BluePlayerMove, RedPlayerMoveSpecial, BluePlayerMoveSpecial;  
10:    public int RedPlayerGoto, BluePlayerGoto;  
11:    // Use this for initialization  
12:    void Start () {  
13:            RedPlayerPos = 0;  
14:            BluePlayerPos = 0;  
15:            RedPlayerMove = false;  
16:            BluePlayerMove = false;  
17:      RedPlayerMoveSpecial = false;  
18:      BluePlayerMoveSpecial = false;  
19:    }  
20:    // Update is called once per frame  
21:    void Update()  
22:    {  
23:      if (RedPlayerMove)  
24:      {  
25:        RedPlayer.transform.position = Vector3.MoveTowards(RedPlayer.transform.position, Plat[RedPlayerPos].transform.position, 0.1f);  
26:        if (Vector3.Distance(RedPlayer.transform.position, Plat[RedPlayerPos].transform.position) < 0.1f)  
27:        {  
28:          if (CounterPos < TargetPos)  
29:          {  
30:            CounterPos++;  
31:            RedPlayerPos++;  
32:          }  
33:          else  
34:          {  
35:            RedPlayerMove = false;  
36:            if (RedPlayerPos == Plat.Length - 1)  
37:            {  
38:              Debug.Log("Red Player Wins!");  
39:            }  
40:          }  
41:        }  
42:      }  
43:      else  
44:      if (BluePlayerMove)  
45:      {  
46:        BluePlayer.transform.position = Vector3.MoveTowards(BluePlayer.transform.position, Plat[BluePlayerPos].transform.position, 0.1f);  
47:        if (Vector3.Distance(BluePlayer.transform.position, Plat[BluePlayerPos].transform.position) < 0.1f)  
48:        {  
49:          if (CounterPos < TargetPos)  
50:          {  
51:            CounterPos++;  
52:            BluePlayerPos++;  
53:          }  
54:          else  
55:          {  
56:            BluePlayerMove = false;  
57:            if (BluePlayerPos == Plat.Length - 1)  
58:            {  
59:              Debug.Log("Blue Player Wins!");  
60:            }  
61:          }  
62:        }  
63:      }  
64:      else  
65:      if (RedPlayerMoveSpecial)  
66:      {  
67:        RedPlayer.transform.position = Vector3.MoveTowards(RedPlayer.transform.position, Plat[RedPlayerGoto].transform.position, 0.1f);  
68:        if (Vector3.Distance(RedPlayer.transform.position, Plat[RedPlayerGoto].transform.position) < 0.1f)  
69:        {  
70:          if (CounterPos < TargetPos)  
71:          {  
72:            CounterPos++;  
73:            RedPlayerPos++;  
74:          }  
75:          else  
76:          {  
77:            RedPlayerMoveSpecial = false;  
78:            RedPlayerPos = RedPlayerGoto;  
79:          }  
80:        }  
81:      }  
82:    }  
83:      void ExecRedPlayerMove(){  
84:            RedPlayerMove = true;  
85:            TargetPos = Dadu.GetComponent<Dadu>().DaduNumber;  
86:            if ((TargetPos + RedPlayerPos) < Plat.Length){  
87:                 RedPlayerPos++;  
88:                 CounterPos = 1;  
89:            }  
90:       }  
91:       void ExecBluePlayerMove(){  
92:            BluePlayerMove = true;  
93:            TargetPos = Dadu.GetComponent<Dadu>().DaduNumber;  
94:            if ((TargetPos + BluePlayerPos) < Plat.Length){  
95:                 BluePlayerPos++;  
96:                 CounterPos = 1;  
97:            }  
98:       }  
99:       void OnGUI () {  
100:            if (GUI.Button(new Rect(10,45,100,30), "Red Go!")){  
101:                 ExecRedPlayerMove();  
102:            }  
103:            if (GUI.Button(new Rect(10,80,100,30), "Blue Go!")){  
104:                 ExecBluePlayerMove();  
105:            }  
106:       }  
107:  }  

Sebagai tambahan kita perlu membuat script baru yaitu PlayerRedHit yang akan bertugas menangani deteksi tabrakan dan memanggil fungsi "spesial epek" naik tangga atau turun tangga. Buat script PlayerRedHit.cs dan ketikkan script sebagai berikut:

1:  using UnityEngine;  
2:  using System.Collections;  
3:  public class PlayerRedHit : MonoBehaviour {  
4:    string hitName;  
5:    // Use this for initialization  
6:    void Start () {  
7:    }  
8:       // Update is called once per frame  
9:       void Update () {  
10:       }  
11:    void OnTriggerEnter(Collider collider) {  
12:      if (collider.gameObject.tag == "Tangga")  
13:      {  
14:        string[] tempstr = collider.gameObject.name.Split('=');  
15:        int tempint = int.Parse(tempstr[1]);  
16:        GameObject.Find("Plat").GetComponent<Player>().RedPlayerGoto = tempint;  
17:        if (GameObject.Find("Plat").GetComponent<Player>().CounterPos == GameObject.Find("Plat").GetComponent<Player>().TargetPos) 
18:        {  
19:        GameObject.Find("Plat").GetComponent<Player>().RedPlayerMoveSpecial = true;  
20:        }  
21:      }  
22:    }  
23:  }  

Pasang script ini pada GameObject Red Player. boardgame11
Jalankan aplikasi anda, dan Ta-da. Jika si Player merah menyentuh tangga sesuai dengan nilai dadunya, maka dia akan naik langsuuuung ke atas.
  boardgame12

Itu baru Player merah kalau Player biru gimana? Sama aja. Tinggal copas, hehehe. Saya yakin anda pasti bisa melakukannya. Nah, sekian seri tutoral pendek ini. Semoga bermanfaat.
Cara Membuat Game Menggunakan Unity3D Cara Membuat Game Menggunakan Unity3D Cara Membuat Game Menggunakan Unity3D Cara Membuat Game Menggunakan Unity3D Cara Membuat Game Menggunakan Unity3D Cara Membuat Game Menggunakan Unity3D Cara Membuat Game Menggunakan Unity3D Cara Membuat Game Menggunakan Unity3D Cara Membuat Game Menggunakan Unity3D Berikut ini adalah beberapa Tutorial Unity3D yang bisa anda pelajari untuk memahami penggunaan game engine Unity 3D dalam membuat game berbasis PC maupun Android. Tutorial ini akan terus diupdate oleh saya, maupun oleh rekan-rekan kontributor yang lain. Semoga bermanfaat. Berikut ini adalah beberapa Tutorial Unity3D yang bisa anda pelajari untuk memahami penggunaan game engine Unity 3D dalam membuat game berbasis PC maupun Android. Tutorial ini akan terus diupdate oleh saya, maupun oleh rekan-rekan kontributor yang lain. Semoga bermanfaat. Berikut ini adalah beberapa Tutorial Unity3D yang bisa anda pelajari untuk memahami penggunaan game engine Unity 3D dalam membuat game berbasis PC maupun Android. Tutorial ini akan terus diupdate oleh saya, maupun oleh rekan-rekan kontributor yang lain. Semoga bermanfaat. Berikut ini adalah beberapa Tutorial Unity3D yang bisa anda pelajari untuk memahami penggunaan game engine Unity 3D dalam membuat game berbasis PC maupun Android. Tutorial ini akan terus diupdate oleh saya, maupun oleh rekan-rekan kontributor yang lain. Semoga bermanfaat. Berikut ini adalah beberapa Tutorial Unity3D yang bisa anda pelajari untuk memahami penggunaan game engine Unity 3D dalam membuat game berbasis PC maupun Android. Tutorial ini akan terus diupdate oleh saya, maupun oleh rekan-rekan kontributor yang lain. Semoga bermanfaat.

Cara Membuat Game Ular Tangga Dengan Unity



No comments:

Post a Comment