Pengenalan Konsep
Pada bagian pertama ini kita akan membahas konsep konsep dasar dari Unity seperti tatap muka, scene, game object, dan hal lain yang menyangkut konsep pembuatan game menggunakan Unity itu sendiri. Untuk informasi, detail dari penggunaan Unity sebenarnya sudah tersedia secara lengkap pada Unity Manual. Walaupun begitu, pada modul ini kami akan menjelaskan secara ringkas disertai dengan informasi lanjut pada setiap bagian yang bisa diakses pada Unity Manual.
Tatap Muka
Secara umum, terdapat enam tatap muka utama yang akan sering digunakan selama pembuatan game menggunakan Unity. detail dari keenam tatap muka tersebut adalah sebagai berikut:
- Project Window. Merupakan tatap muka yang menampilkan file dan asset yang digunakan pada suatu project.
- Scene View. Merupakan tatap muka yang menunjukan tampilan keseluruhan scene.
- Game View. Merupakan tatap muka yang menunjukan tampilan ketika game sedang berlangsung.
- Hierarchy Window. Merupakan tatap muka yang menampilkan daftar object yang ada pada suatu scene.
- Inspector Window. Merupakan tatap muka yang menampilkan detail dari suatu object pada suatu scene maupun file dan asset pada suatu project.
- Toolbar. Merupakan tatap muka yang berisi berbagai macam tool yang bisa digunakan selama pembuatan game pada Unity.
Informasi lebih lanjut mengenai tatap muka utama pada Unity bisa dilihat disini.
Sekadar informasi, selain keenam tatap muka utama tersebut juga ada tatap muka lain yang umumnya digunakan untuk keperluan yang lebih spesifik seperti Sprite Editor, Animation Editor, Audio Mixer, dan lain sebagainya.
Scene
Scene merupakan hal yang merujuk pada keseluruhan lingkungan pada game yang bisa berupa menu, world, gameplay, maupun hal lain. Bagian utama dari game yang dibuat menggunakan Unity terletak di scene-nya, dimana scene sendiri akan berisi berbagai macam object yang saling berinteraksi di dalamnya. Ketika game berlangsung hanya ada satu scene yang bisa aktif dan agar bisa menggunakan scene yang lain maka diperlukan adanya perpindahan dari satu scene ke scene yang lain yang nantinya akan dibahas lebih lanjut pada bagian Navigasi dan Scene di modul ini.
Informasi lebih lanjut mengenai scene pada Unity bisa dilihat disini.
Membuat Scene Baru
-
Pembuatan scene baru pada Unity dilakukan melalui tatap muka Project Window.
Secara umum, asset yang berbentuk scene diletakkan pada folder bernama
Scenes
. jadi pastikan Project Window sudah berada pada folder tersebut. -
Terdapat dua cara untuk menambahkan scene baru, yakni dengan menekan tombol
+
pada bagian kiri atas lalu pilihScene
atau dengan klik kanan, laluCreate
, dan pilihScene
. - Beri nama scene yang dibuat dengan nama
Game
. -
Buka scene baru yang telah dibuat dengan cara double klik.
Pada tahap ini Scene View, Game View, dan Hierarchy Window akan berganti sesuai dengan isi dari scene yang dibuka.
Game Object
Game object merupakan hal yang merujuk pada objek-objek seperti player, musuh, bangunan, partikel, button, dan sebagainya yang ada pada suatu scene di game.
Secara default, scene yang baru dibuat memiliki game object Main Camera
yang digunakan untuk menunjukan viewport ketika game sedang berlangsung.
Informasi lebih lanjut mengenai game object pada Unity bisa dilihat disini.
Membuat Game Object Baru
- Pembuatan game object baru pada Unity dilakukan melalui tatap muka Hierarchy Window.
- Sama seperti pembuatan scene baru, terdapat dua cara untuk menambahkan game object baru, yakni dengan menekan tombol
+
pada bagian kiri atas lalu pilih jenis game object yang diinginkan atau dengan klik kanan lalu pilih jenis game object yang diinginkan. -
Untuk percobaan kali ini, kita akan membuat game object dengan jenis
3D Object
->Cube
. Setelah itu akan muncul objek persegi pada Scene View maupun Game View.Walaupun yang dibuat adalah game jenis 2D, Unity tetap memperlakukan game tersebut sebagai game 3D dengan perspektif kamera 2D. Hal ini bisa dilihat dengan mematikan toggle
2D
pada Scene View. - Beri nama game object yang baru dibuat dengan nama
Player
.
Transformasi Game Object
Setiap game object memiliki component Transform
yang digunakan untuk merepresentasikan transformasi (posisi, rotasi, dan skala) dari game object pada suatu scene.
Terdapat dua cara untuk mengubah transformasi suatu game object, yakni sebagai berikut:
- Mengubah langsung pada Scene View menggunakan tools yang tersedia pada toolbar (sebelah kiri atas), seperti
Move Tool
,Rotate Tool
,Scale Tool
, dan lain sebagainya. - Mengubah nilai dari component
Transform
secara langsung pada Inspector Window. (sebelumnya klik game object pada Scene View atau Hierarchy Window untuk menampilkan detail component dari game object)
Informasi lebih lanjut mengenai Transformasi game object pada Unity bisa dilihat disini.
Sebagai contoh kita bisa mengubah transformasi dari game object yang sebelumnya dibuat dengan mengubah nilai Position
menjadi (0, 0, 0)
dan Scale
menjadi (5, 5, 5)
pada Inspector Window.
Hasilnya akan didapatkan objek persegi besar yang berada tepat di tengah-tengah scene.
Component
Component merupakan bagian kecil yang menyusun suatu game object pada scene.
Sesuai dengan prinsip pada component based architecture, setiap hal kecil dari program akan dibentuk menjadi komponen sehingga memudahkan prototyping untuk objek baru tanpa membuat ulang keseluruhan isi dari objek tersebut.
Sebagai contoh, Transform
merupakan salah satu component yang merepresentasikan transformasi dari game object seperti yang dijelaskan sebelumnya, selain itu ada juga component Camera
yang digunakan untuk mengatur view ketika game berlangsung seperti ukuran view, jenis projection, dan lain sebagainya.
Informasi lebih lanjut mengenai component pada Unity bisa dilihat disini.
Membuat Component Baru dengan C# Script
-
Pembuatan component baru dengan C# script dilakukan melalui tatap muka Project Window.
Secara umum, asset yang berbentuk C# script diletakkan pada folder bernama
Scripts
. jadi pastikan Project Window sudah berada pada folder tersebut. -
Terdapat dua cara untuk menambahkan C# script, yakni dengan menekan tombol
+
pada bagian kiri atas lalu pilihC# Script
atau dengan klik kanan, laluCreate
, dan pilihC# Script
. -
Beri nama component yang baru dibuat dengan nama
RandomStart
.Untuk percobaan kali ini, kita akan membuat component dengan nama
Random Start
yang akan digunakan untuk membuat posisi game object terletak secara acak di awal. -
Buka C# script yang telah dibuat dengan cara double klik.
Pada tahap ini Unity akan membuka text editor yang menampilkan C# script dari component
Random Start
. Jika Visual Studio tidak terinstall, maka bisa menggunakan text editor apapun seperti Notepad.
Mem-Program Component Random Start
Secara default, isi dari C# script yang baru dibuat adalah sebagai berikut:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RandomStart : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
Inti dari component yang dibuat menggunakan C# script terletak pada fungsi Start()
dan Update()
.
Sesuai dengan penjelasan pada comment line (baris program dengan awalan //
yang berfungsi sebagai keterangan), fungsi Start()
akan digunakan untuk melakukan eksekusi pertama di awal, sedangkan fungsi Update()
akan digunakan untuk melakukan eksekusi yang dipanggil secara terus menerus di setiap frame.
Pada percobaan kali ini, kita akan fokus pada fungsi Start()
saja karena proses untuk membuat game object berada di tengah cukup dilakukan sekali pada eksekusi pertama di awal.
Ubah isi dari fungsi Start()
sebagai berikut:
void Start()
{
Vector3 position = transform.position;
position.x = Random.Range(-10, 10);
transform.position = position;
}
Penjelasan singkat dari baris program diatas, program akan menyimpan nilai transform.position
ke variabel sementara position
yang berupa Vector3
.
Vector3
sendiri merepresentasikan posisi 3D yang terdiri dari x
, y
, dan z
, seperti pada nilai Position
pada component Transform
di Inspector Window.
Kemudian program akan mengubah nilai x
dari position
dengan angka acak dari kisaran -10
hingga 10
dan menge-_set_-nya kembali ke variabel transform.position
.
Sebagai catatan,
transform
merupakan member variable yang memiliki tipe data classTransform
. Dalam sisi pemrograman, classTransform
merupakan class yang merepresentasikan isi dan fungsi dari componentTransform
yang ada pada game object. Informasi lebih lanjut mengenai classTransform
bisa dilihat disini.
Setelah selesai, simpan baris program tersebut.
Menggunakan Component RandomStart
- Buka scene
Game
yang sebelumnya sudah dibuat. - Klik objek
Player
dan Pada Inspector Window, klikAdd Component
. -
Cari component yang bernama
Random Start
, dan kemudian tambahkan. -
Setelah component ditambahkan, klik tombol
Play
pada Toolbar untuk melihat hasilnya.Pada tahap ini, tampilan akan terfokuskan pada Game View, dan objek
Player
akan secara otomatis berpindah tempat pada posisi yang berbeda saat game sedang berlangsung.Sebagai tambahan, jika di-_play_ berulang kali, posisi awal dari objek
Player
akan berbeda dengan posisi yang didapatkan pada game yang berlangsung sebelumnya. Hal ini terjadi karena fungsiRandom.Range()
akan memilih angka acak sesuai dengan parameter yang diberikan.
Order of Execution
Order of execution merupakan istilah yang merujuk pada urutan dari pemanggilan event pada sistem Unity.
Salah satu dari event tersebut nantinya akan memanggil fungsi yang ada pada component seperti Start()
dan Update()
yang sudah dijelaskan sebelumnya.
Pada bagian ini kita akan membahas lebih lanjut mengenai bagaimana pengaruh order of execution ini terhadap looping dari suatu game, sehingga alur dari sistem bisa bekerja sesuai dengan yang diinginkan.
Informasi lebih lanjut mengenai order of execution pada Unity bisa dilihat disini.
Component Up Movement
Pada percobaan kali ini, kita akan membuat component baru yang akan digunakan untuk membuat objek bergerak ke atas selama game sedang berlangsung
Untuk itu, pertama, buat C# script baru dan beri nama Up Movement
.
Buka C# script tersebut dan ubah isi dari fungsi Update()
sebagai berikut:
void Update()
{
Vector3 translation = new Vector3(0, 5, 0);
transform.Translate(translation * Time.deltaTime);
}
Penjelasan singkat dari baris program diatas, program akan membuat variabel Vector3
baru dengan nilai 0
, 5
, 0
.
Kemudian program akan memanggil fungsi Translate()
dari transform
dengan parameter yang berupa variabel yang sudah dibuat sebelumnya dikalikan dengan Time.deltaTime
.
Maksud dari fungsi Translate()
sendiri adalah untuk mentranslasi (menggerakkan) objek ke arah vektor yang sudah dibuat sebelumnya.
Sebagai catatan,
Time.deltaTime
merupakan nilai selisih waktu antara frame sebelum dan frame sekarang. Perkalian denganTime.deltaTime
pada Unity umumnya digunakan untuk menghindari adanya gerakan yang patah patah ketika game sedang berlangsung. Informasi lebih lanjut mengenai perlunyaTime.deltaTime
bisa dilihat disini.
Setelah selesai, simpan baris program tersebut.
Menggunakan Component Up Movement
- Buka scene
Game
yang sebelumnya sudah dibuat. - Tambahkan component
Up Movement
pada objekPlayer
. -
Klik tombol
Play
untuk melihat hasilnya.Pada tahap ini, objek
Player
akan bergerak ke atas. Hal ini bisa terjadi karena pada fungsiUpdate()
, transformasi dari objek akan dilakukan translasi secara terus menerus di setiap frame sehingga menimbulkan kesan seolah-olah sedang bergerak ke atas.
Kesimpulan
Dari bagian pertama ini kita telah mengenal konsep dasar pembuatan game menggunakan Unity. Dari sini kita bisa membuat game yang terdiri dari scene dengan berbagai isi objek sesuai keinginan, serta mengatur setiap objek yang ada dengan component yang bisa kita buat sendiri.
Pada bagian selanjutnya kita akan membahas lebih lanjut mengenai manipulasi objek menggunakan component yang dibuat sendiri, terutama soal mengatur gerakan dari game object serta mengatur interaksi antara pemain dengan game yang akan dibuat.