Duck Shooter dengan Unity part-9

Halo-halo,

Saatnya melanjutkan kembali duck-shooter kita, dan hari ini kita akan membuat sistem Pause. Okeh, yang pertama kamu lakukan adalah men-download assets yang sudah saya siapkan, kamu bisa download disini. (Tapi jika kamu punya assets yang lain kamu boleh menggunakanya)

Setelah selesai, letakan file tersebut kedalam folder assets/image kita. setelah itu buat gameobject baru dan beri nama pause, dan isi dengan sprite renderer, tapi jangan lupa posisi “order in layer”-nya di ubah. Setelah itu buat juga “PausePopup” dimana “PausePopup” akan tampil saat kita menekan tombol pause.

pauseButon

pause-box

Sekarang kita code dan masukan code ke dalam tombol pause.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using UnityEngine;
using System.Collections;

public class Pause : MonoBehaviour {

public Camera mainCamera;
public GameObject pauseObject;

// Use this for initialization
void Start () {
//mengatur posisi screen space dan mengubahnya ke world space
int widt = mainCamera.pixelWidth;
int tinggi = mainCamera.pixelHeight;
Vector3 posisiBaru = this.transform.position;
posisiBaru = mainCamera.ScreenToWorldPoint (new Vector3 (widt-40, tinggi - 30, 10));
this.transform.position = posisiBaru;
}

void OnMouseDown() {
if (GlobalVariable.stateMachine != "play")return; // jika state machine bukan play, maka kode dibawah tidak dijalankan
GlobalVariable.stateMachine = "pause";
pauseObject.transform.position = new Vector3(-1.1f, 0.7f, 0); //menurunkan code posisi dari pausePopup
}

// Update is called once per frame
void Update () {

}
}

Jika sudah selesai masukan object2 tersebut. Kalian bisa mencoba untuk memastikan code itu berhasil.

Selanjutnya kita akan membuat code untuk button play, dimana saat StateMachine “pause”, dan kita klik button play, maka pemainan akan dilanjutkan kembali.

1
2
3
4
5
6
7
8
9
10
11
12
13
using UnityEngine;
using System.Collections;

public class PlayBtn : MonoBehaviour {

public GameObject pauseObject;

void OnMouseDown() {
if (GlobalVariable.stateMachine != "pause")return;
GlobalVariable.stateMachine = "play";
pauseObject.transform.position = new Vector3(-1.1f, 10.7f, 0);
}
}

Masukan code di atas di posisi pada gameobject button play. Jika sudah selesai semuanya, kita akan membuat New Scene untuk level main menu kita. Klik File > New Scene. Buatlah tampilan Main Menu sesuai dengan keingin kalian, tapi di pastikan ada button play dimana kita akan menampilkan game-area kita.

main-menu

Setelah itu kita akan membuat code untuk button play sehingga pada saat button play di klik, maka akan pindah ke scene game-area.

1
2
3
4
5
6
7
8
9
10
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement; // memangil Library SceneManager

public class playMainmenu : MonoBehaviour {

void OnMouseDown() {
SceneManager.LoadScene ("game-area"); //kamu tidak bisa menggunakan fungsi ini, sebelum kamu dipanggil pada line 3
}
}

Selanjutnya kita buat code tambahan untuk pindah ke main menu, yang nantinya akan kita letakan pada button home yang ada di “PausePopup”.

1
2
3
4
5
6
7
8
9
10
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class HomeBtn : MonoBehaviour {

void OnMouseDown() {
SceneManager.LoadScene ("main-menu");
}
}

Oke jangan lupa masukan kodenya ke dalam HomeBtn yang ada di “PausePopup”, dan jangan lupa untuk menambahkan Scene tersebut pada “Build Settings”, setelah itu mencoba semuanya dari Main-Menu.

build-settings

Okey, kita sudahkan tutorial unutk hari ini, tapi kemaren saya memberikan quest untuk kalian.. apakah ada yang sudah bisa melakukannya ? Kalian bisa cek kode dibawah untuk penjelasanya

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public Sprite[] spriteNumber ; //array sprite untuk meletakan semua sprite angka 0 ~ 9
public GameObject[] timerObject; // array Gameobject untuk meletakan satuan dan puluhan
public float setTimer ;
public GameObject timeOut;

// Use this for initialization
void Start () {

checkWaktu (); // fungsi ini di panggil untuk mengecek waktu yang pertama kali di set
}

// Update is called once per frame
void Update () {
//... CODE yang sebelumnya

checkWaktu (); //saya akan melakukan cekWaktu untuk memastikan waktu sprite tesebut selalu update
}

//fungsi cek waktu
void checkWaktu(){
int timing = (int)Mathf.Floor(setTimer); //membulatkan waktu dan mengubahnya menjadi int
string stTiming = timing.ToString (); // int timing yang di atas di ubah menjadi string
for (int i = 0; i < timerObject.Length; i++) {
if (stTiming.Length < 2) { // mengecek string dari stTiming apakah kurang dari 2 (berarti satuan)
if (timerObject [0].activeSelf) // jika timerobject pada posisi [0] aktif, maka lakukan perintah yang bawah
timerObject [0].SetActive (false); // matikan timerobject array ke 0
int nil = int.Parse (stTiming); // mengubah string menjadi int
timerObject [1].GetComponent <SpriteRenderer> ().sprite = spriteNumber [nil]; // mengambil object pada array ke 1 dan mengubah spritenya menjadi sesuai dengan int tersebut
} else if (setTimer > 0) { //jika waktu masih lebih besar dari 0
string oneS = stTiming [i].ToString (); //mengubah string dari posisi i
if (!timerObject [i].activeSelf) // jika timerObject ke i "tidak aktif", maka lakukan perintah yang dibawah
timerObject [i].SetActive (true); //aktifkan object ke i
int nil = int.Parse (oneS); //mengambil string dari oneS
timerObject [i].GetComponent <SpriteRenderer> ().sprite = spriteNumber [nil]; //mengambil obeject pada array ke i dan mengubah spritenya menjadi sesuai dengan int tersebut
}
}
}

selanjutnya saya menambahkan gameobject baru pada “Time” dan diberi nama “puuluhanTime” dan “satuanTime”, dan mengaturnya dalam inspectator.

settings-timer

Yup sudah selesai, okey sekarang saatnya menutup tutorial ini. Next saya akan membahas tentang sound dan itu adalah tutorial terakhir untuk duck shooter. Jika kalian ada pertanyaan atau masih bingung kalian bisa menanyakanya di kolom komentar di bawah.

see yaaa, and cheers 😀