Saturday 26 September 2015

Unity Tutorial Indonesia : Health System

Advertisement



Health System secara sederhana adalah sebuah sistem atau logika pemberian nilai stamina/darah pada objek dan proses bagaimana stamina tersebut dapat berkurang dan bertambah.


MULAI

Oke vcg akan membuat contoh sederhana yaitu memberi stamina sebesar 100 ke objek cube dan jika stamina habis maka cube akan menghilang. Stamina akan berkurang jika klik kiri pada mouse ditekan dan pengurangan stamina dapat dilihat di jendela console.




Tambahkan objek cube ke jendela game dan buat C# Script "PlayerHealth". Buka script masukkan listing program berikut :

A. PlayerHealth.cs
using UnityEngine;
using System.Collections;

public class PlayerHealth : MonoBehaviour {

                public int startingHealth = 100;
                public int currentHealth;
               
                void Start(){
                                currentHealth = startingHealth;
                }
               
                public void TakeDamage(int damaged){
                                currentHealth -= damaged;
                               
                                Debug.Log(currentHealth);
                }
               
                void Update(){
                                if(currentHealth <= 0){
                                                Destroy(gameObject);
                                }
                }

}

Penjelasan :

int startingHealth = 100;
Dibuat variabel untuk memberikan nilai awal pada stamina.

currentHealth = startingHealth;
variabel CH mengambil nilai SH yaitu 100.

public void TakeDamage(int damaged)
Adalah sebuah method yang digunakan untuk mengurangi nilai stamina. Penggunaan public agar method ini dapat digunakan pada script yang berbeda.




Klik Cube dan beri Name Tag "Player".





Buat C# Script baru "EnemyAttack" dan tambahkan ke objek Main Camera, buka script dan masukkan baris program berikut :

B. EnemyAttack.cs
using UnityEngine;
using System.Collections;

public class EnemyAttack : MonoBehaviour {

                PlayerHealth playerHealth;
                GameObject player;
               
                void Awake(){
                                player = GameObject.FindGameObjectWithTag("Player");
                                playerHealth = player.GetComponent<PlayerHealth>();
                }
               
                void Update(){
                                if(Input.GetMouseButtonDown(0)){
                                                playerHealth.TakeDamage(10);
                                }
                }

}

Penjelasan :


PlayerHealth playerHealth;
Pendeklarasian script, karena pada "EnemyAttack" akan digunakan Method TakeDamage(), maka terlebih dahulu harus dideklarasikan nama Script yang memiliki method tersebut.

GameObject.FindGameObjectWithTag()
Digunakan untuk mengakses objek di dalam game menggunakan nama Tag pada objek tersebut.

if(Input.Get.........)
Jika Klik kiri ditekan 1x, maka.....

playerHealth.TakeDamage(10)
Method TakeDamage dijalankan dan diberi nilai 10, dimana 10 adalah nilai yang akan mengurangi variabel currentHealth pada script "PlayerHealth".




Jalankan game dan coba klik kiri beberapa kali, maka stamina Cube akan berkurang dan ketika stamina = 0, cube dihilangkan. 


SELESAI





EmoticonEmoticon