Duck Shooter dengan Unity part-7

Halo,

Masih dengan saya, dan masih melanjutkan kembali “duck shooter”, dan untuk tutorial hari ini adalah melakukan reload, sebelum memulainya, apakah kalian sudah berhasil menyelesaikan quest kemarin ? Jika belum saatnya untuk pembahasan quest yang kemarin. Karena hal ini berkaitan dengan tutorial hari ini.

Oke sekarang kita buat Gameobject kosong beri nama “peluru” dan masukan 6 child didalamnya peluru1~peluru6, serta masukan sprite render untuk menampilkan gambar.
pengaturan-peluru

Setelah itu selesai, kita akan membuat script dengan nama “PeluruUI.cs”.

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
38
39
40
41
42
43
44
45
46
47
using UnityEngine;
using System.Collections;

public class PeluruUI : MonoBehaviour {

public Camera mainCamera;
public Sprite spritePeluruIsi;
public Sprite spritePeluruKosong;
public GameObject[] objectPeluru;

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

// Update is called once per frame
void Update () {
//mengatur tembakan setiap tembakan yang keluar akan mengurangi amunsi
if(Input.GetMouseButtonDown (0)){
GlobalVariable.amunisi -= 1;

//code di bawah ini kita buat untuk mengetahui saat mouse menyentuh gameobject "reload" maka akan memanggil fungsi reload
Vector2 worldPoint = mainCamera.ScreenToWorldPoint (Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast (worldPoint, Vector2.zero);
if(hit.collider != null){ // dilakukan pengecheckan apakah raycast bersentuhan dengan object collider
if(hit.collider.name == "reload"){
ReloadPeluru ();
}
}
if(GlobalVariable.amunisi < 0)return;
if(GlobalVariable.amunisi<6){
objectPeluru [GlobalVariable.amunisi].GetComponent <SpriteRenderer> ().sprite = spritePeluruKosong;
}

}
}

void ReloadPeluru(){
GlobalVariable.amunisi = 6;
//Debug.Log ("isi");
foreach(GameObject gambarPeluru in objectPeluru){
gambarPeluru.GetComponent <SpriteRenderer>().sprite = spritePeluruIsi;
}
}
}

Okey kita lanjut dengan masukan script kedalam gameobject “peluru” dan sekaligus mengisi seluruh object dari script tersebut.

setting-perluru

Jika sudah saatnya kita membuat button baru untuk melakukan reload. Pertama kita buat object baru dengan nama “reload” (hal ini berkaitan dengan script yang sudah kita buat), dan berikan sprite reload, selain itu masukan juga box collider. Kalian bisa membuat sprite tersebut ataupun mendownloadnya disini.

gambar-reload

Setelah selesai, dilanjutkan dengan membuat script “Reload.cs” untuk mengatur posisi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using UnityEngine;
using System.Collections;

public class Reload : MonoBehaviour {

public Camera mainCamera;

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

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

}
}

Okeh akhirnya selesai juga tutorial hari ini, dan pada tutorial hari ini kalian bisa mempelajari

“Mengetahui bagaimana caranya sebuah titik bisa mengenai object lain dengan raycasthit”

Bisa di ibaratkan klo raycast adalah senter laser yang di tembakan dari titik tertentu menuju target, dan raycasthit adalah object yang tersentuh dengan laser tersebut saat laser ditembakan.

Sebelum saya tutup pada tutorial kemarin, saya melakukan kesalahan yaitu lupa mengembalikan posisi bebek agar kembali seperti semua(posisi berputar). Sekarang kalian “DuckBehaviour.cs” dan tambahkan script dibawah ini.

1
2
3
4
5
6
void randomizeGambarBebek(){
int rand = Random.Range (0, gambarBebek.Length);
childObject.GetComponent <SpriteRenderer>().sprite = gambarBebek[rand];
//tambahkan script yang ini
childObject.transform.localScale = new Vector3 (1, 1, 1);
}

Untuk next tutorial kita akan membuat batasan waktu (jadi permainan hanya berlangsung sebentar) dan membuat pause.

Cheers 😀