Kali ini saya hanya akan memberikan tips dasar berupa daftar script -script dasar yang dapat memudahkan kalian para game developer khususnya para developer unity dalam mengerjakan project yang ada.
Unity merupakan sebuah game engine yang paling populer dengan berbagai macam produk yang dapat dihasilkan dari game engine ini seperti 2d dan 3d game, AR,VR, bahan film, belum lagi unity dapat mensupport banyak sekali type platform seperti android ,ios pc dll. Juga memiliki banyak sekali asset yang sudah jadi di unity Asset Store.
Tapi menurut saya yang menjadi kekuatan utama Unity terletak dalam pemrograman dengan menggunakan bahasa pemrograman C#, kalian dapat menggunakannya untuk menangani input pengguna, memanipulasi game objek di scene, mendeteksi interaksi antar benda, membuat GameObjects baru dll. Yang dapat membantu kalian dalam merelakan logika game yang dipikirkan
Mengenai pemerograman ini lah yang kadan menjadi kendala bagi kita yang memiliki ide bagus tetapi tidak bisa merealisasikanya, mungkin permasalaan mudah dapat di selesaikan dengan mencarinya di google, tetapi proses ini akan menyebapkan banyak pekerjaan tertunda dan menghentikan laju kerja kita.
Maka dari itu saya membuat daftar script dasar ini agar dapat memudahkan kalian semua saya sarankan utuk menghafalnya bukan hanya sekerdar membaca lalu menyelesaikan masalah yang ada.
Kita mulai dari yang pertama
- Code pengeksekusi awal event
dalam sebuah script unity code code ini biasanyanya dipanggil lebih awal dari pada kode yang lain untuk informasi lainya silahkan klik link di bawah
Kalian hanya perlu menaruh code tambahan di antara { kode disini }
private void Awake() { /* Dipanggil saat skrip sedang dimuat */ }
private void OnEnable() { /* Dipanggil setiap kali objek diaktifkan */ }
private void Start() { /* Dipanggil pada frame pertama saat skrip diaktifkan */ }
private void Update() { /* Dipanggil sekali per frame */ }
private void LateUpdate() { /* Memanggil setiap frame setelah Update */ }
private void OnBecameVisible() { /* Dipanggil saat renderer terlihat oleh Kamera apa pun */ }
private void OnBecameInvisible() { /* Dipanggil saat renderer tidak lagi terlihat oleh Kamera mana pun */ }
private void OnDrawGizmos() { /* Memungkinkan Anda menggambar Gizmos(garis bantu) yang tampil di Scene View bukan game view */ }
private void OnGUI() { /* Dipanggil beberapa kali per frame sebagai respons terhadap kejadian GUI */ }
private void OnApplicationPause() { /* Dipanggil di akhir frame saat jeda terdeteksi */ }
private void OnDisable() { /* Dipanggil setiap kali objek dinonaktifkan */ }
private void OnDestroy() { /* Dipanggil jika Game Objects yang sebelumnya aktif telah dihancurkan */ }
Selanjutnya sedikit berbeda kode ini akan dipanggil setiap fixed time step atau langkah waktu tepat yang dapat dilihat Edit > Project Settings > Time > Fixed Timestep
private void FixedUpdate() { /* dipanggil setiap fixed timestep */ }
- code memanipulasi Objek Game
/* pembuatan GameObject*/
Instantiate(GameObject prefab);
Instantiate(GameObject prefab, Transform parent);
Instantiate(GameObject prefab, Vector3 position, Quaternion rotation);
/* Contoh */
Instantiate(bullet);
Instantiate(bullet, bulletSpawn.transform);
Instantiate(bullet, Vector3.zero, Quaternion.identity);
Instantiate(bullet, new Vector3(0, 0, 10), bullet.transform.rotation);
/* Untuk menghancurkan GameObject */
Destroy(gameObject);
/* Mencari GameObject */
GameObject myObj = GameObject.Find("Nama DI Hierarchy");
GameObject myObj = GameObject.FindWithTag("TAG");
/* Mengakses Komponen di dalam game object */
Example myComponent = GetComponent<Example>();
AudioSource audioSource = GetComponent<AudioSource>();
Rigidbody rgbd = GetComponent<Rigidbody>();
- Code mengatur vektor object
X = Kanan/Kiri Y = Atas/Bawah Z = Depan/Belakang (X,Y,Z)
Vector3.right /* (1, 0, 0) bergerak ke kanan 1X */ Vector2.right /* (1, 0) */
Vector3.left /* (-1, 0, 0) bergerak ke kiri -1X */ Vector2.left /* (-1, 0) */
Vector3.up /* (0, 1, 0) bergerak ke atas 1Y*/ Vector2.up /* (0, 1) */
Vector3.down /* (0, -1, 0)bergerak ke bawah -1Y */ Vector2.down /* (0, -1) */
Vector3.forward /* (0, 0, 1) bergerak ke depan 1Z*/
Vector3.back /* (0, 0, -1)bergerak ke belakang -1Z */
Vector3.zero /* (0, 0, 0) */ Vector2.zero /* (0, 0) */
Vector3.one /* (1, 1, 1) bergerak ke kanan,atas,depan*/ Vector2.one /* (1, 1) */
float length = myVector.magnitude /* Panjang dari vector ini */
myVector.normalized /* Menjaga arah, tetapi mengurangi panjang menjadi 1 */
- Code Mengatur Waktu
/* Waktu dalam detik sejak permainan dimulai */
float timeSinceStartOfGame = Time.time;
/* Skala di mana waktu berlalu */
float currentTimeScale = Time.timeScale;
/* mengatur waktu di dalam game 0 = berhenti game tidak berjalan */
Time.timeScale = 0;
/* Waktu dalam detik yang diperlukan untuk menyelesaikan frame terakhir */
/* gunakan dengan Update() atau LateUpdate() */
float timePassedSinceLastFrame = Time.deltaTime;
/* interval dalam detik saat physic dan frame rate di update*/
/* Gunakan dengan FixedUpdate() */
float physicsInterval = Time.fixedDeltaTime;
- Code yang mengatur fisika
Kode ini mengatur bagaimana benda bereaksi dengan benda lainya di dalam game scene sesuai dengan teori fisika yang asli
private void OnCollisionEnter(variable benda lainnya) { Debug.Log(gameObject.name + " bereaksi " + hit.gameObject.name); }
private void OnCollisionStay(variable benda lainnya) { Debug.Log(gameObject.name + " terus bereaksi" + hit.gameObject.name); }
private void OnCollisionExit(variable benda lainnya) { Debug.Log(gameObject.name + " reaksi selesai " + hit.gameObject.name); }
/* Pemicu harus diperiksa pada salah satu object */
private void OnTriggerEnter(variable benda lainnya) { Debug.Log(gameObject.name + " bereaksi " + hit.name); }
private void OnTriggerStay(variable benda lainnya) { Debug.Log(gameObject.name + " terus bereaksi " + hit.name); }
private void OnTriggerExit(variable benda lainnya) { Debug.Log(gameObject.name + " reaksi selesai " + hit.name); }
/*Untuk object 2D cukup tambahkan 2D di akhir nama Metode */
private void OnCollisionEnter2D(Collision2D hit) { }
private void OnCollisionStay2D(Collision2D hit) { }
private void OnCollisionExit2D(Collision2D hit) { }
private void OnTriggerEnter2D(Collider2D hit) { }
private void OnTriggerStay2D(Collider2D hit) { }
private void OnTriggerExit2D(Collider2D hit) { }
- Code yang mengatur Coroutines atau hal berulang
/* Buat Coroutine */
private IEnumerator CountSeconds(int count = 10)
{
for (int i = 0; i <= count; i++) {
Debug.Log(i + " second(s) have passed");
yield return new WaitForSeconds(1.0f);
}
}
/* memanggil coroutine */
StartCoroutine(CountSeconds());
StartCoroutine(CountSeconds(10));
/* memanggil Coroutine yang mungkin perlu dihentikan */
StartCoroutine("CountSeconds");
StartCoroutine("CountSeconds", 10);
/* Hentikan Coroutine */
StopCoroutine("CountSeconds");
StopAllCoroutines();
/* Simpan dan panggil Coroutine dari variabel */
private IEnumerator countSecondsCoroutine;
countSecondsCoroutine = CountSeconds();
StartCoroutine(countSecondsCoroutine);
/* Hentikan Coroutine yang disimpan */
StopCoroutine(countSecondsCoroutine);
/* Jenis data yang dikembalikan Coroutine */
yield return null; // Menunggu hingga panggilan Update() berikutnya
yield return new WaitForFixedUpdate(); // Menunggu hingga panggilan FixedUpdate() berikutnya
yield return new WaitForEndOfFrame(); // Tunggu sampai semua frame ini dieksekusi
yield return new WaitForSeconds(float seconds); // Menunggu waktu permainan dalam hitungan detik
yield return new WaitUntil(() => MY_CONDITION); // Menunggu hingga kondisi khusus terpenuhi
yield return new WWW("MY/WEB/REQUEST"); // Menunggu permintaan web
yield return StartCoroutine("MY_COROUTINE"); // Tunggu sampai Coroutine lain selesai
- Yang terakhir adalah code input dari pemain
if (Input.GetKeyDown(KeyCode.Space)) { Debug.Log("Tombol spasi ditekan"); }
if (Input.GetKeyUp(KeyCode.W)) { Debug.Log("tombol W lepas”); }
if (Input.GetKey(KeyCode.UpArrow)) { Debug.Log("tombol panah atas ditekan"); }
/* Tombol Input terletak di Edit >> Pengaturan Proyek >> Input */
if (Input.GetButtonDown("ButtonName")) { Debug.Log("Tombol ditekan"); }
if (Input.GetButtonUp("ButtonName")) { Debug.Log("Tombol dilepas"); }
if (Input.GetButton("ButtonName")) { Debug.Log("Tombol sedang ditekan"); }
Baiklah itu dia code code dasar yang dapat kita gunakan langsung di dalam project kita sesuai keggunaan masing masin
Sampai di sini tips kali ini semoga bermanfaat, jika ada pertanyaan silahkan berkomentar di bawah,terimakasih sudah berkunjung sampai jumpa di artikel selanjutnya
0 Komentar