Showing posts with label BASIC. Show all posts
Showing posts with label BASIC. Show all posts

Wednesday, 16 March 2016

Unity Tutorial Indonesia : Attribute - [RequireComponent]


Salam super, kali ini mimin mau membahas attribute yang ada pada c# unity. Ada banyak jenis attribute yang digunakan pada C#, yaitu :

A. Unity Attribute
- [AddComponentMenu]
- [ContextMenu]
- [ContextMenuItem]
- [MenuItem]
- [NetworkSettings]

B. Unity Class Attribute
- [DisallowMultipleComponent]
- [ExecuteInEditMode]
- [InitializeOnLoad]
[RequireComponent]
- [RuntimeInitializeOnLoad]

C. Unity Property Attribute
- [HideInInspector]
- [IntRangeAttribute]
- [Multiline]
[SerializeField]
- [TextArea]
- [Tooltip]
- [Header]
- [Range]
- [Space]


[RequireComponent]

Oke, langsung aja [RequireComponent] disingkat [RC] adalah sebuah attribute yang digunakan jika dalam sebuah script program membutuhkan sebuah component yang memang sangat penting dan harus ada dalam script tersebut, secara sederhana itu salah satu fungsi [RC].

Dan bisa berfungsi juga untuk menambahkan sebuah komponen ke sebuah objek dalam game. Kita mulai dengan contoh agar lebih mudah dipahami....



Tahap pertama coba tambahkan 1 objek, mimin menambahkan objek sphere, pada objek sphere di jendela inspektor belum ada komponen tambahan selain komponen yang sudah ada.

Buat C# Script baru beri nama "LatihanAttribute.cs" atau boleh bebas dan tambahkan listing program berikut ke LatihanAttribute.cs
using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Rigidbody))]
public class LatihanAttribute : MonoBehaviour {


}
jika sudah, tambahkan script tadi ke objek sphere dan lihat pada jendela Inspektor.




Secara otomatis komponen Rigidbody akan ditambahkan setelah script tadi diberikan ke si sphere.

Untuk mencoba apa komponen tersebut berhasil ditambahkan dan bisa diedit melalui script program, mimin remake LatihanAttribute.cs menjadi 
using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Rigidbody))]
public class LatihanAttribute : MonoBehaviour {

                Rigidbody rigidbody;
               
                void Awake(){
                                rigidbody = GetComponent<Rigidbody>();
                }
               
                void Start(){
                                rigidbody.useGravity = true;
                }


}
Remake script dan save kemudian kembali ke jendela inspektor.




Hapus ceklis pada Use Gravity, soalnya mimin mau coba ceklis bagian ini melalui script yang tadi.




Jalankan game dan lihat jendela inspektor, pada Use Gravity ceklis ditambahkan, ini artinya komponen sukses diberikan ke objek menggunakan [RequireComponent]

Ada satu lagi kelebih dari komponen yang ditambahkan menggunakan [RC], cek gambar di bawah




Mimin ingin mencoba menghapus komponen Rigidbody tadi dengan Remove Component.




Dan yang terjadi, komponen ngga bisa dihapus selama script tadi masih ada di objek sphere, untuk menghapusnya pertama hapus dulu script LatihanAttribute.cs kemudian komponennya.


selesai

Thursday, 11 February 2016

Unity Tutorial Indonesia : Attribute - [SerializeField]


Salam super, kali ini mimin mau membahas attribute yang ada pada c# unity. Ada banyak jenis attribute yang digunakan pada C#, yaitu :

A. Unity Attribute
- [AddComponentMenu]
- [ContextMenu]
- [ContextMenuItem]
- [MenuItem]
- [NetworkSettings]

B. Unity Class Attribute
- [DisallowMultipleComponent]
- [ExecuteInEditMode]
- [InitializeOnLoad]
[RequireComponent]
- [RuntimeInitializeOnLoad]

C. Unity Property Attribute
- [HideInInspector]
- [IntRangeAttribute]
- [Multiline]
[SerializeField]
- [TextArea]
- [Tooltip]
- [Header]
- [Range]
- [Space]



[SerializeField]

[SerializeField] digunakan untuk menampilkan variabel yang di-private atau di-default pada listing program di jendela Inspektor.

Umumnya untuk menampilkan variabel cukup diberi akses "public" seperti "public int umur", maka pada jendela inspektor bakal ditampilin tuh variabel dan bisa diedit juga, nah bagaimana agar variabel yang diberi akses "private" dan "default" dapat ditampilkan juga ? gunakan [SerializeField].

<bertanya> "Tunggu dulu, kalo untuk menampilkan di inspektor bisa pakai akses "public" kenapa repot-repot pake "private" sama [SerializeField] ? </bertanya>

Jadi gini pas bikin variabel kadang mimin gak mau variabel ini bisa diakses oleh Class lain makanya dikasih akses "private" biar hanya Class tersebut yang bisa mengakses variabel,

BACA JUGA : Modifier Akses Pada C#

nah pada variabel yang sama, mimin juga ingin kalo variabel tersebut bisa diedit pada jendela Inspektor, maka dari itu digunakan attribute [SerializeField].


Latihan

Pertama buat sebuah C# Script "LatihanAttribute.cs" dan tambahkan listing program berikut,
using UnityEngine;
using System.Collections;

public class LatihanAttribute : MonoBehaviour {

          [SerializeField]
          private string nama = "Mata Lemon";

}
Berikan script ke Main Camera atau objek apapun, kemudian lihat pada jendela inspektor variabel nama yang diberi akses private dapat diedit pada jendela Inspektor.





Untuk mengetest apakah variabel dapat diedit atau tidak, remake script tadi menjadi 
using UnityEngine;
using System.Collections;

public class LatihanAttribute : MonoBehaviour {

            [SerializeField]
            private string nama = "Mata Lemon";


            void Start(){
                      Debug.Log(nama);
            }
}
Dan coba ganti nama pada jendela inspektor sebelum game dijalankan, kalo sudah play game, maka pada jendela konsol akan diprint si variabel nama yang baru.




Bagaimana jika ada 2 variabel private yang ingin diedit melalui inspektor ? gunakan juga 2 atrribute [SerializeField]
[SerializeField]
private string nama = "Mata Lemon";

[SerializeField]
private int umur;





[System.Serializable]

Apa perbedaan [SerializeField] dan [Serializable] ? 

Sederhana saja [System.Serializable] digunakan untuk Class, Enum, Struct, Delegate. Sedangkan [SerializeField] digunakan untuk variabel.

Friday, 5 February 2016

Panduan belajar PHP HTML CSS dari awal sampai mahir

Panduan belajar PHP HTML CSS dari awal sampai mahir, dengan kemajuan zaman kita harus di tuntut untuk mengenal komputer. Komputer merupakan ilmu basic yang harus di miliki oleh kita di masa yang akan datang, percayalah. :D
Panduan belajar PHP HTML CSS dari awal sampai mahir
Salah satu ebook untuk yang sudah mahir :D

Didalam komputer ada banyak ilmu yang bisa kita pelajari,yaitu pemrograman. Pemrograman ada banyak jenisnya, misalnya saja visual basic. Aplikasi ini saya sering sebut aplikasi desktop. Kita tidak akan membahas aplikasi desktop. pada kesempatan kali ini saya ingin berbagi bagaimana cara mudah belajar php html css. Semuanya termasuk didalam pemrograman website.

Pemrograman website juga banyak sob, bukan php saja. Ada juga yang namanya ASPX, Python dan lainnya.

Panduan belajar PHP HTML CSS dari awal sampai mahir

Tidak ada panduan yang paling ampuh, namun saya punya tips dan trik berdasarkan pengalaman bagaimana belajar php agar lebih mudah dipahami. Berikut saya akan uraikan to do list yang bisa sobat ikuti, semoga saja menjadi programmer yang handal.


Web Tempat belajar php html dan css

Yang namanya ilmu komputer mungkin tidak ada yang instan, jadi anda harus di tuntut belajar. Banyak website yang membahas tentang pemrograman website.

  • www.w3schools.com
W3Schools adalah situs web developer informasi, dengan tutorial dan referensi yang berkaitan dengan topik pengembangan web seperti HTML, CSS, JavaScript, PHP, SQL, dan JQuery.

Situs ini mendapatkan namanya dari singkatan untuk World Wide Web; W3 adalah numeronym dari WWW. W3Schools tidak berafiliasi dengan W3C.

Hal ini dibuat dan dimiliki oleh Refsnes data, pengembangan perangkat lunak milik keluarga Norwegia dan perusahaan konsultan.

Situs ini menyediakan panduan referensi yang mencakup banyak aspek pemrograman web, termasuk teknologi seperti HTML, XHTML, CSS, XML, JavaScript, PHP, ASP, SQL dll

W3Schools menyediakan ribuan contoh kode. Dengan menggunakan editor online yang disediakan, pembaca dapat mengedit contoh dan mengeksekusi kode eksperimental.

Berita, Artikel, dan Tutorial seputar Ilmu Komputer : Tutorial Belajar HTML, Tutorial Belajar MySQL, CSS, PHP, Javascript, dan Jquery.


Blog yang membagikan source code php secara gratis, sebagian :D

  • Youtube
Saya lebih suka menonton ketimbang membaca, jadi bagi sobat yang lebih suka menonton tutorial php pemula / beginner. Coba lihat tutorial php untuk pemula berikut ini.



Ebook Panduan belajar PHP HTML CSS dari awal sampai mahir

Bagi sahabat yang lebih mudah memahami melalui membaca, maka saya sangat sarankan untuk membaca ebook panduan php html dan css untuk pemula.

Kesimpulan

Mungkin sobat yang baru mengenal php masih bingung harus mulai dari mana, saya mencoba menyimpulkan uraian di atas menjadi 2 bagian yang bisa sobat tempuh.

  • Bagi yang suka membaca panduan silahkan download panduan ebook php, dan berkunjung ke blog / website yang membahas tentang php, salah satunya Terraligno ini.
  • Bagi yang suka atau lebih mudah memahami melalui video silahkan mampir ke chanel youtube saya , semoga terbantu.
Selanjutnya mulailah praktek.


See u sobat, semangat belajarnnya ya.... Saya dulunya belajar php secara otodidak juga kok.

Friday, 15 January 2016

Mobile - Basic Unity Touch Script


Oke, tutorial pertama di tahun 2016, kali ini mimin mau coba menjelaskan basic dari touch script di unity. Unity touch script ini penting banget apalagi buat yang mau bikin game di mobile phone, langsung aja :

Untuk mencoba touch pada mobile phone, pertama bisa instal dulu Unity Remote 4 pada smartphone masing-masing, Unity Remote ini digunakan untuk mencoba touch script secara langsung pada smartphone menggunakan kabel usb yang dihubungkan ke pc. Untuk peroses penggunaannya sudah banyak tutorial tentang unity remote 4     :D hehe

A. touchCount
touchCount digunakan untuk mendeteksi ada berapa jari yang menyentuh layar biasanya ditulis
Input.touchCount
Sebagai contoh, mimin print total jari yang menyentuh layar, gunakan perintah ini
void Update(){
            Debug.Log(Input.touchCount);
}
Nah coba deh sentuh layar satu atau lebih jari.


B. GetTouch
GetTouch digunakan untuk mendapatkan kondisi touch setelah jari menyentuh layar. Umumnya GetTouch ini digunakan untuk memberi sebuah event, contoh event sederhana diambil dari game Vainglory adalah ketika jari menyentuh layar maka karakter akan berpindah ke posisi dimana jari menyentuh.

Contoh, ketika 1 jari menekan layar, maka posisi layar yang disentuh jari akan diprint
void Update(){
           if(Input.touchCount > 0){
                       Debug.Log(Input.GetTouch(0).position)
           }
}
Penjelasan :
Pertama dikondisikan dulu jika ada lebih dari 0 jari yang menyentuh layar, kemudian posisi dari sentuhan yang pertama tadi diprint menggunakan Debug.Log().

GetTouch(0) , angka nol menunjukan bahwa yang akan diprint adalah sentuhan yang pertama (Konsep Array atau List), jadi kalo mau mencoba print sentuhan jari yang kedua gunakan GetTouch(1) dimana kedua jari tetep menempel di layar.

GetTouch memiliki 4 jenis kondisi ketika jari menyentuh layar, yaitu :
- Began, ketika pertama kali jari menyentuh layar
- Stationary, ketika jari terus ditekan
- Moved, ketika jari bergerak pada layar
- Ended, ketika jari diangkat dari layar
Untuk penejelasan tentang kondisi ini akan dibahas di tutorial selanjutnya.


C. Variabel Touch
Variabel touch digunakan untuk menyimpan touch atau sentuhan, dengan menggunakan variabel touch penggunaan GetTouch() jadi lebih simple.
Contoh
void Update(){
          if(Input.touchCount > 0){
                     Touch touchPertama = Input.GetTouch(0);
                     Touch touchKedua = Input.GetTouch(1);

                     Debug.Log(touchPertama.position);
          }
}
Penjelasan :
Konsep contoh point C sama dengan Konsep contoh point B, yaitu print posisi layar yang disentuh oleh jari pertama, bedanya pada point C Input GetTouch dipindahkan dulu ke Variabel Touch.


D. touches
Input.touches memiliki konsep yang sama dengan GetTouch, perbedaannya Input.touches dapat menampung banyak sentuhan pada sebuah variabel array.

Contoh penulisan 1
Touch[] myTouch = Input.touches;
for (int i = 0 ; i < Input.touchCount; i++){
          // Lakukan Sesuatu
}
Contoh penulisan 2
if(Input.touches.Length > 0){
          // Lakukan Sesuatu
}

Untuk Input.touches akan dibahas pada tutorial selanjutnya.





Update - Setelah Sekian Lama Istirahat Membuat Tutorial

www.unity3d.com

Yo semua vcg di sini. setelah beberapa waktu break karena mimin sakit cukup lama ditambah leptop rusak, alhamdulillah berkat do'a dari kalian semua mimin udah sembuh dan bisa lanjut bikin tutorial.

Mulai 2016 mimin udah migrasi ke Unity versi 5.2, dan untuk Blender udah menggunakan versi 2.76b versi terbaru dari Blender per tanggal 15 januari 2016.

Untuk melihat kelebihan dan kekurangan dari versi terbaru ini, sudah banyak artikel yang menjelaskan atau bahkan di web resminya sudah dijabarkan, jadi mimin akan langsung aja meneruskan membuat tutorial yang tertunda.

Thursday, 15 October 2015

Unity Tutorial Indonesia : Combo System

Secara sederhana Combo adalah sebuah event/keadaan yang berganti-ganti atau event yang selalu diupdate. Keadaan ini bisa memiliki batasan dan bisa juga tak terbatas.

Contoh dalam game fighting (pertarungan) karakter memiliki 4 gerakan pukulan yang berbeda tetapi tombol yang ditekan adalah tombol yang sama.



MULAI
Mimin vcg akan mencoba implementasi sederhana yaitu Combo Warna pada kubus, dimana ketika klik kiri ditekan maka warna akan berubah-ubah.

Dan ketika warna sudah diupdate pada combo sekian tetapi klik kiri tidak ditekan lagi maka combo secara otomatis akan kembali ke combo awal.




Tahap pertama tambahkan objek Cube ke jendela game.





Buat C# Script "ComboSystem" dan tambahkan ke objek Cube.
Buka script dan tuliskan listing program berikut.

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

public class ComboSystem : MonoBehaviour {

                private int point = 1;
                private int totalCombo = 4;
                private float timer = 0;
               

                void Update () {
                                PointBertambah();
                                TimeBetweenCombos();
                                ComboWarna();
                }
               

                void PointBertambah(){
                                if(point <= totalCombo){
                                                if(Input.GetMouseButtonDown(0)){
                                                                timer = 2;
                                                                point += 1;
                                                }
                                }else{
                                                point = 1;
                                }
                }
               

                void TimeBetweenCombos(){
                                if(timer > 0){
                                                timer -= Time.deltaTime;
                                }
                               
                                if(timer <= 0){
                                                point = 1;
                                }
                }
               

                void ComboWarna(){
                                if(point == 1)
                                                gameObject.renderer.material.color = Color.red;
                               
                                if(point == 2)
                                                gameObject.renderer.material.color = Color.blue;
                               
                                if(point == 3)
                                                gameObject.renderer.material.color = Color.green;
                               
                                if(point == 4)
                                                gameObject.renderer.material.color = Color.yellow;
                }

}

Penjelasan :
Tahap pertama dideklarasikan beberapa variabel yaitu "int point" yang digunakan untuk menentukan point combo, "int totalCombo" digunakan untuk mendeklarasikan jumlah combo dan "float timer" yang digunakan untuk mereset point combo jika tidak ada proses penekanan pada mouse.

Kemudian dibuat 3 metode utama yaitu :

PointBertambah(){}
Dalam metode ini digunakan logika sederhana yaitu jika nilai point kurang dari jumlah combo dan jika klik kiri ditekan maka point bertambah 1 dan nilai timer menjadi 2. Nah jika nilai point lebih dari jumlah combo maka nilai point direset ke nilai awal. "timer = 2" adalah lama waktu sebelum point direset ke nilai awal.

TimeBetweenCombos(){}
Metode yang digunakan untuk mereset nilai point, jika tidak ada penekanan pada mouse maka point akan direset ke nilai awal.

ComboWarna(){}
Pada metode ini hanya digunakan logika percabangan, yaitu jika nilai point = A maka Warna Cube menjadi A.





Jalankan game dan coba tekan  beberapa kali klik kiri pada mouse. 


SELESAI



Thursday, 8 October 2015

Blender Tutorial Indonesia : Baking Textures


Tutorial kali ini tentang bagaimana cara menggabungkan banyak texture menjadi satu texture. Trik ini merupakan trik penting yang wajib dikuasai untuk membuat game apalagi jika seorang "Single Fighter Developer" yang artinya semua dilakukan sendiri mulai dari Desain Game, Desain 3D, Musik, Script, Logika , Analis Sistem, QA dll semua dilakukan sendiri.



MULAI


Jadi gini, biasanya setelah membuat sebuah objek di blender pastinya membuat banyak tektur yang berbeda , contoh kalo bikin rumah mulai dari texture Genteng, dinding, Halaman, jendela dan lainnya pasti membuat lebih dari 1 textur kan , nah dengan teknik baking texture,  jika selesai membuat model 3D nya lebih efisien dan mudah di edit di engine game jika dijadikan satu texture saja.



Seperti biasa setelah dibuat new project akan ditampilkan 1 kubus, vcg akan menggunakan kubus sebagai media pembelajaran kali ini.




Buat 2 buah jendela kerja dengan menggeser 3 "garis miring" di pojok kanan atas. Jendela kedua ubah menjadi UV/ Image Editor.




1. Masuk ke edit mode
2. Tekan A untuk menyeleksi seluruh bagian kubus sehingga berwarna kuning.
3. Tekan U pilih Smart UV Project.
4. Klik OK





Kemudian buat Image Baru untuk menyimpan texture2 yang digunakan. Klik "new" beri nama sesuai selera.




Saatnya memberi banyak texture ke objek cube.
1. Masuk ke komponen "Texture"
2. Klik tanda +
3. Klik New image kemudian beri warna.





Oke vcg sudah memberi 3 warna solid (Red, Blue, Green).




Tahap selanjutnya adalah memberi warna pada bagian sisi kubus sesuai selera. Seleksi terlebih dahulu bagian mana yang akan diberi warna dengan klik kanan, kemudian pilih texture yang akan digunakan dan klik "Assign" untuk menempelkan texture.





Hasil yang vcg buat seperti gambar di atas.





Sekarang baru tahap "Baking Textures" dimana semua texture yang ada pada kubus akan dipindahkan ke image yang sudah dibuat di jendela "UV/ Image".

1. Masuk ke Fungsi Render
2. Pada menu "Bake" ubah Bake Mode menjadi Texture karena yang akan diambil hanya texture solid milik si Kubus.
3. Tekan bake, tunggu beberapa saat sampai texture image dibuat.





Jika sudah tinggal simpan texture tersebut untuk digunakan di engine game.
1. Klik Image di UV/Image Editor
2. Pack As PNG, merubah ekstensi image
3. Save Image As.
4. Selesai




Dan hasilnya seperti gambar di atas, 1 buah image dari gabungan beberapa texture.




SELESAI

Saturday, 26 September 2015

Unity Tutorial Indonesia : Basic Save Load System


Sangat penting di dalam sebuah game terdapat fitur untuk menyimpan data pemain, dengan adanya fitur ini pemain dapat melanjutkan permainan tanpa harus memulai permainan dari awal.



MULAI
Vcg akan membuat implementasi dimana user memasukkan Nama ke komponen Text Field, kemudian user menekan tombol "Save Data" maka data disimpan. Setelah itu ditekan tombol "Load Data" maka data yang tersimpan sebelumnya akan ditampilkan.





Tambahkan UI Panel ubah nama menjadi "Panel Save Load".




Tambahkan 2 UI button ke dalam panel.





Tambahkan juga UI InputField dan UI Text, atur posisi seperti pada gambar.





Buat C# Script "SaveLoadManager", berikan script pada objek EventSystem dan tambahkan baris program berikut :

A. SaveLoadManager.cs
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class SaveLoadManager : MonoBehaviour {

                public InputField inputField;
                public Text textOutput;
               
                public void TombolSave(){
                                string nama = inputField.text;
                               
                                PlayerPrefs.SetString("Name", nama);
                }
               
                public void TombolLoad(){
                                string loadNama = PlayerPrefs.GetString("Name");
                               
                                textOutput.text = "" + loadNama;
                }

}

Penjelasan :

InputField inputField
UI InputField dideklarasikan karena text atau inputan dari user akan disimpan (save) oleh perintah PlayerPrefs.

string nama = inputField.text;
variabel nama akan mengambil text yang sudah diinput oleh user.

PlayerPrefs.SetString("Name", nama);
Ini adalah baris program yang digunakan untuk menyimpan data menggunakan kunci. "Name" adalah kunci dan nama adalah data yang akan disimpan.

PlayerPrefs.GetString("Name")

Ini Adalah baris perintah untuk mengambil nilai yang ada pada kunci "Name".





Saatnya menambahkan method ke UI Button :
1. Klik Button Save, lihat jendela inspektor - Button (Script) - On Click()
2. Klik + untuk menambahkan
3. Masukkan EventSystem ke kotak On Click()





Masih pada objek Button Save, klik No Function - Cari Nama Script - pilih nama Method untuk Button Save.

Tambahkan juga Method TombolLoad pada Button Load.





Klik EventSystem masukkan UI InputField ke kotak Input Field dan masukkan juga UI Text ke kotak Text Output pada script.





Jalankan game dan coba masukkan kata pada bagian Input Field, jika sudah tekan tombol Save Data untuk menyimpan dan tekan tombol Load Data untuk menampilkan data yang disimpan.





Selamat mencoba.



SELESAI


Unity Tutorial Indonesia : Health System



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