Mudah Membuat Game Dengan Unity3D PDF
Mudah Membuat Game Dengan Unity3D PDF
12
Donasi
50% buat Anak Yatim
Yth. Pembaca...
Tutorial ini bersifat free...silahkan dibagikan ke semua yang
membutuhkannya...Jika tutorial ini memberikan manfaat
dan menambah pengetahuan pembaca semua, lalu anda
berniat mau menyisihkan sebagian rejekinya untuk
berdonasi sebagai salah satu bentuk apresiasi...Silahkan
melalui rekening BCA 008 043 3476 an Deni Kurnia.
Jazakumullohu Khoir...
Selamat Belajar!
Nah, saat ini banyak tools/software yang dipakai untuk membuat sebuah game.
Salah satu software tersebut adalah Unity3D.
Catatan :
Pada modul ini, penulis menggunakan Unity3D versi 3.4.05. Anda dapat
menggunakan versi terbaru dengan proses instalasi yang kurang lebih sama
dengan versi yang dipakai pada modul ini.
2. Pilih Next
Pada saat membuka Unity3D, maka akan muncul tampilan sebagai berikut :
Untuk sementara Welcome Screen ini anda close dulu saja, agar kita langsung
menuju ke jendela kerja Unity seperti gambar 1.7
1. Scene
2. Game
Game adalah tempat ditampilkannya aplikasi yang dibuat di Scene View.
Ketika anda mengaktifkan jendela game, maka game/project yang anda buat
dapat di jalankan di jendela game view ini. Coba sekali lagi bedakan antara
Game View dengan Scene View!
3. Project
Caranya, anda tinggal klik menu create di jendela project, lalu akan muncul sub
menu seperti gambar 1.10. Penjelasan fasilitas ini akan dijelaskan pada Bab 2
(modul tingkat menengah).
4. Hierarchy
Hierarchy / hirarki merupakan tempat beradanya game object pada scene
yang sedang aktif. Ketika kita berpindah scene, maka komponen dalam
hierarchy akan berubah mengikuti scene yang sedang aktif. Coba perhatikan
gambar 1.11
1. Transform Tool
- Buat object cube dengan cara pilih create di hierarchy, pilih cube;
- Move the selected object : geser objek cube pada sumbu x, y atau z;
Gambar 1.15 Posisi koordinat ada pada cube, saat kedua obyek diseleksi.
- Local
Posisi koordinat x, y, z pada obyek terpilih/aktif, sehingga ketika obyek
dirotasi maka posisi x, y, z akan berubah. Artinya koordinat obyek
terpilih relative terhadap koordinat scene utama/Scene View.
Gambar 1.16 Posisi koordinat local ada pada cube saat dirotasi
Gambar 1.17 Posisi koordinat global ada pada cube saat dirotasi
3. Play/Pause/Step Button
Berfungsi untuk play, stop dan go to next scene pada game. Anda tentu
sudah familiar dengan button seperti ini.
4. Layout Drop-Down
Penjelasan fungsi – fungsi menu Unity akan dibahas pada bagian tutorial
membuat game di akhir bab 2 dan awal bab 3. Setelah mengikuti tutorial
tersebut, anda dengan sendirinya akan memahami fungsi menu pada Unity
secara keseluruhan.
Catatan :
Coba perhatikan, diatas button Create ada beberapa pilihan Import the
following package, pilihan itu adalah standar package Unity yang
memudahkan kita untuk membangun sebuah game. Untuk sementara
biarkan saja dulu jangan dicentang/dipilih bagian tersebut. Kita akan
memakainya pada bagian tutorial membuat game.
1. Klik File > Save Scene, atau File > Save Scene as…
Catatan :
Dalam satu project bisa terdiri dari satu scene atau lebih, tujuannya kita bisa
berpindah dari satu scene ke scene lain. Contoh penggunannya adalah
leveling dalam game, scene1 untuk level1, scene2 untuk level2, dst.
Langkah yang paling penting setelah kita membuat project game adalah
bagaimana game tersebut bisa di-compile/di-build sehingga dapat dimainkan
orang lain.
2. Pilih Salah satu platform yang akan dipakai, lalu tekan Build :
Unity menyediakan fasilitas membuat game object standar seperti cube, cylinder,
capsule, plane, camera, particle, dan light dll. Adapun game object yang memiliki
tingkat kompleksitas yang tinggi, seperti model manusia dan hewan dapat dibuat di
software lain seperti Blender, 3D Max atau Maya. Selanjutnya model tersebut di-
import oleh Unity menjadi game object dan disimpan sebagai asset. Tahapan import
asset ini akan dijelaskan pada tutorial membuat game 3D di awal bab 3.
Untuk memulai membuat obyek dasar seperti cube, langkahnya adalah sebagai
berikut :
drag
Selain ketiga cara diatas, menggeser, memutar dan mengubah ukuran game
object, dapat dilakukan melalui jendela Inspector. Coba perhatikan gambar 2.6
Camera adalah bagian penting bagaimana suatu game ditampilkan kepada user.
Unity menyediakan fasilitas membuat camera dengan langkah :
4. Save ke folder Assets seperti pada gambar 2.13 , sehingga nanti akan muncul
di Jendela Inspector (gambar 2.14)
Gambar 2.13. Contoh letak menyimpan file material pada folder Assets
5. Drag material dari jendela Project ke cube di jendela Hierarchy seperti gambar
2.15. Lihat perubahan material yang terjadi pada cube !
drag
Klik disini
Sebuah proyek game tentu akan banyak memerlukan suara/sound. Pada Unity
disebut Audio components. Secara umum dibagi dua, yaitu :
Secara default Audio Listener sudah terdapat pada Main Camera pada saat anda
membuat project baru dan scene baru pada Unity. Langkah diatas untuk tambahan
pengetahuan agar anda mengetahui proses pembuatan Audio Listener.
Setelah anda memahami cara membuat Audio Listener, berikutnya adalah cara
memberikan suara (Audio Source) pada suatu game object
1. Siapkan sumber sound yang akan di-import seperti contoh pada gambar 2.17
(atau anda bisa mengunduh yang gratisan di internet)
2. Copy ke folder Asset pada project anda. Pada folder Assets ini anda sebaiknya
membuat folder baru dengan nama Suara, supaya file pada Assets tersusun
rapi/terstruktur.
drag
Gambar 2.19. Tampilan pada Inspector saat sound LASER01 di - drag ke cube
Ada icon
speaker
6. Centang Loop pada jendela Inspector di bagian Audio Source, agar suara
dijalankan secara berulang-ulang.
7. Untuk mencoba bahwa cube sudah memiliki suara, klik tombol play
Gambar 2.22. Partikel yang sudah dibuat pada jendela Scene View
Ikuti nilai
yang tertera
pada gambar
ini
Klik untuk
mengganti
warna
Prefab adalah salah satu Assets yang dapat digunakan berkali-kali. Prefab
terletak pada Project View dan dapat dimasukkan kedalam Scene View dengan
cara di-drag. Selain itu, prefab pun dapat dikaitkan/ di-link-kan dengan game
object lain.
2. Secara default, Unity akan memberikan nama New Prefab, anda bisa
menggantinya dengan nama lain pada jendela Inspector. Penamaan ini
untuk memudahkan saat prefab di-load oleh script. Perhatikan gambar 2.24
Catatan :
drag
4. Setelah cube di-drag ke PrefabCube, anda tidak memerlukan cube lagi, oleh
karena itu hapus cube yang ada di jendela Scene dengan cara klik lalu tekan
delete pada keyboard.
5. Sekarang anda memiliki PrefabCube yang bisa di-drag sebanyak-banyaknya
kedalam Jendela Scene tanpa harus membuat cube satu persatu!.
Catatan :
dalam contoh dibawah ini, animasi yang dibuat menggunakan game object
cube
klik
save
geser
geser
keyframe
7. Untuk melihat animasi yang sudah dibuat coba tekan button play pada
jendela Animation.
- Directional Light
- Point Light
- Spotlight
1. Directional Light
Langkah membuat Directional Light :
- Klik GameObject > Create Other > Cube
- Klik GameObject > Create Other> Directional Light
Perhatikan Gambar 2.31 dan 2.32
geser
Kalau anda sudah mengerti cara membuat Directional Light, tentu akan mudah
membuat Point Light dan Spotlight seperti dibawah ini bukan ?
Physics pada Unity diantaranya dipakai untuk mengontrol gravitasi, gaya dan
tumbukan (collision) pada suatu game object. Unity memiliki bawaan NVIDIA PhysX
Physic engine.
1. Rigidbody
Rigidbody merupakan sub-menu physics yang salah satu fungsinya digunakan untuk
mengontrol gravitasi pada game object. Untuk mencoba menerapkan rigidbody ini,
langkahnya adalah sebagai berikut :
plane
- Terapkan Physics pada cube (pastikan posisi cube melayang diatas plane),
langkahnya : Klik Cube, klik Component> Physics> Rigidbody
- Tempatkan posisi Main Camera seperti gambar 2.37. Sehingga pada saat di-
play pergerakan jatuhnya cube ke plane akan terlihat.
Catatan :
Pada jendela Inspector, secara default properties Use Gravity di-checklist.
Artinya ketika diterapkan rigidbody pada game object, secara otomatis
berlaku gravitasi pada obyek tersebut.
Use Gravity
aktif
Gambar 2.38 properties pada Inspector pada saat diterapkan rigidbody pada Game Object
2. Kinematic Rigidbodies
3. Collider
Collider merupakan komponen physic yang dipakai untuk mengontrol tumbukan
antar game object. Secara default Unity menyertakan collider ketika kita
membuat cube, sphere, capsule dan plane. Namun, untuk obyek (game object)
yang di-import dari software modelling lain, maka kita perlu menambahkan
collider terhadap obyek tersebut secara. Unity menyediakan lima tipe collider
sebagai berikut :
- Box, digunakan untuk obyek berbentuk kubus/kotak
- Sphere, digunakan untuk obyek berbentuk bola
- Capsule, digunakan untuk obyek berbentuk kapsul
- Mesh, digunakan untuk obyek yang memiliki mesh yang kompleks
- Wheel, digunakan untuk obyek berbentuk roda
1. GUI Text
Yaitu teknik menampilkan teks agar muncul di layar pada saat game
dijalankan.
2. GUI Texture
Yaitu teknik menampilkan gambar/image agar muncul di layar pada saat
game dijalankan.
2. Edit Tulisan GUI Text dan Text menjadi Selamat Datang. Perhatikan tulisan di
Scene View, berubah bukan ?
Edit tulisan
2. Buat file *.jpg (misalnya texture.jpg) ukuran 800 x 600 piksel di Adobe
Photoshop, lalu save di folder asset, sehingga muncul pada jendela project.
drag
5. Klik Pixel Inset pada panel Inspector, lalu ubah ukuran Width : 800 dan
Height : 600. Perhatikan perubahan yang terjadi pada Game View.
7. Apabila parameter yang diatur benar, kurang lebih texture akan tampil pada
Game View seperti gambar 2.45.
Gambar 2.45 Tampilan GUI Texture pada Game View, setelah diatur parameternya.
Sekarang anda sudah memahami cara membuat GUI Text dan GUI Texture.
Salah satu aplikasinya adalah untuk opening menu atau perpindahan antar scene
pada game.
Pada bagian akhir sub pokok bahasan GUI, akan dijelaskan beberapa langkah
sekaligus contoh membuat GUI dengan Javascript. Ikuti langkahnya sebagai berikut :
function OnGUI () {
// Membuat Background Kotak
GUI.Box (Rect (10,10,100,90), "Menu Game");
Penjelasan Script :
function OnGUI ()
merupakan fungsi untuk mengontrol GUI pada Unity. Setiap kali anda akan
membuat GUI dengan script, maka fungsi ini harus dipanggil.
GUI.Box (Rect (10,10,100,90), "Menu Game");
merupakan perintah membuat kotak dengan aturan 10= jarak dari sumbu x ke
sisi kotak, 10=jarak dari sumbu y ke sisi kotak, 100 = panjang kotak dan 90
=lebar kotak.
if (GUI.Button (Rect (20,40,80,20), "Level 1")) {
Application.LoadLevel (1);
Merupakan perintah membuat button dengan aturan 20= jarak dari sumbu x
ke sisi button, 40=jarak dari sumbu y ke sisi button, 80 = panjang button dan
Modul Membuat Game dengan Unity3D Engine - copyright Deni Kurnia.
20 = lebar kotak. Kemudian tulisan "Level 1" merupakan tulisan pada button,
dan perintah Application.LoadLevel (1); merupakan perintah untuk
memanggil scene/level 1.
if (GUI.Button (Rect (20,70,80,20), "Level 2")) {
Application.LoadLevel (2);
Perintah untuk membuat button kedua dan saat di-klik maka akan memanggil
scene/level 2.
Catatan :
Pada saat membuat game, tentu anda akan mempunyai banyak scene,
sehingga GUI seperti ini diperlukan untuk perpindahan antar scene.
5. Buat game object baru dengan cara klik GameObject> Create Empty
6. Drag script yang dibuat (MenuScript) ke dalam GameObject di jendela
Hierarchy
7. Untuk melihat hasilnya, coba jendela kerja dipindahkan ke Game View lalu
tekan Play.
Gambar 2.46
Men-drag script kedalam game object (kiri) dan hasilnya pada saat di –play pada game view (kanan)
Salah satu perbedaan antara game 2D dengan 3D terletak pada posisi game objek
terhadap sudut pandang pemain. Pada game 2D posisi game object berada pada
koordinat x dan y saja, sehingga pemain hanya dapat menggerakan game object ke
kanan, kiri, atas atau bawah. Berbeda dengan game 3D, pemain seolah-olah dapat
masuk kedalam ruang permainan (sumbu z) dan leluasa menggerakan game object
ke depan, belakang, kiri, kanan, atas maupun bawah.
Pada sub bab ini, akan dijelaskan tahapan membuat game 2D sederhana.
Diharapkan apabila sudah memahami konsep game 2D, maka anda akan mudah
mengembangkan game 3D.
Catatan :
Untuk tahap awal, game object cube pada gambar 2.49 diasumsikan sebagai
pesawat player yang dapat di gerakkan ke kanan dan ke kiri. Nanti, pada bagian
akhir tutorial, cube ini akan diganti dengan mesh berbentuk pesawat, sehingga
game tampak lebih real.
Agar cube/pesawat dapat dikontrol oleh keyboard, maka kita harus memanggil
input keyboard melalui script.
Gambar 2.51 Membuat ScriptPlayer untuk menggerakan cube ke kiri dan ke kanan
Player Speed = 2
Penambahan script
Time.deltaTime
Gambar 2.53 Penambahan script Time.deltaTime agar pergerakkan menjadi halus dan lebih realistis.
8. Kalau pergerakkan terasa lambat, maka ubah kembali Player Speed menjadi =
10 pada Inspector. Bagaimana ? sudah realistis bukan ?
9. Selanjutnya Klik Component > Physic > Rigidbody
10. Centang Is Kinematic dan Non-aktifkan Use Gravity pada jendela Inspector
Pada bagian ini, kita akan menampilkan skor dan nyawa player yang tersedia.
Langkahnya adalah sebagai berikut :
- Klik cube, lalu edit pada bagian inspector. Perhatikan, sekarang ada
penambahan variable Player Lives dibawah Player Speed. Ubah nilainya dari
0 menjadi 3. Artinya, nyawa Player di-set menjadi 3.
- Lalu mengapa variable Player Score tidak muncul ? padahal kita sudah
mendeklarasikannya pada gambar 2.56. Hal ini karena kita
mendeklarasikanya sebagai static var !
var
static var
Silahkan di-Play, perubahan apa yang terjadi ? Anda akan melihat seperti gambar
2.59, bukan ?
Permasalahan :
Apabila anda memahami bagaimana cube dapat digeser ke kanan dan ke kiri, maka
dengan mudah kita dapat membuat script agar cube dapat digeser ke atas dan ke
bawah. Caranya adalah panggil input vertikal, lalu beri perintah menggeser cube.
Mudah bukan ?
Sekarang dengan leluasa anda dapat menggerakan cube ke kiri, kanan, atas dan
bawah.
- Cek pada koordinat berapa ke samping kanan dan kiri (y), atas dan bawah (x) posisi
cube hilang
- Anggap koordinat sudah didapatkan, lalu berikan script tambahan seperti dibawah
ini :
Coba Play sekarang ! apa yang terjadi ? seharusnya cube akan tetap berada pada
area permainan walaupun terus digeser ke kanan, kiri, atas ataupun bawah….!
- Klik Capsule, beri nilai Peluru Speed = 10 pada jendela Inspector. Untuk lebih
jelasnya lihat gambar 2.60
Jangan dicentang
centang
Catatan :
Script untuk peluru hampir sama dengan script untuk menggeser cube ke
atas dan ke bawah. Perbedaannya, pada script peluru tidak memanggil
fungsi input dahulu, sehingga ketika di-play peluru langsung bergerak ke
atas tanpa menunggu input dari keyboard. Perhatikan script pada gambar
2.59 baris per baris !
Permasalahan :
Ketika di-play maka peluru akan terus bergerak sampai koordinat tak hingga.
Hal ini tidak boleh terjadi, karena peluru hanya diperlukan untuk menembak
batu luar angkasa di area layar yang kita setting saja. Oleh karena itu lakukan
langkah sebagai berikut :
- Klik Layout menjad 2 by 3, tujuannya agar kita memiliki jendela Scene View
dan Game View yang terpisah.
Perhatikan peluru
tidak Nampak di
koordinat Y = berapa ?
drag
drag
Gambar 2.62 Menghubungkan PrefabPeluru ke jendela Inspector pada Game Object Cube
- Coba Play ! kalau langkah anda benar, peluru akan dapat ditembakkan saat
spacebar ditekan.
- Berikut merupakan tampilan script lengkap PlayerScript.Js
Saat peluru ditembakkan, kurang lengkap rasanya kalau tidak ada suara peluru.
Langkah memasukkan suara kedalam peluru adalah sebagai berikut :
drag
Sebuah game akan seru kalau ada misi. Misi pada game ini adalah menembak batu-
batu luar angkasa sebanyak mungkin. Setiap batu yang kena akan mendapat skor
+10. Pemain dianggap berhasil menyelesaikan Level 1 kalau mencapai skor 1000.
Mari kita mulai membuatnya. Pada game ini kita menggunakan game object sphere
untuk batu luar angkasa. Langkahnya adalah sbb :
- Klik Game Object > Create Other > Sphere
- Ubah pada jendela Inspector sbb :
Transform
Position : x = 0, y = 0 dan z= 0
Rotation : x = 0, y = 0 dan z = 0
Scale : x = 1 Y = 1 dan z = 1
- Klik sphere, edit Batu Speed menjadi 5 (boleh nilainya diubah 10) pada
jendela Inspector
Masalah :
Persis seperti peluru, kita tidak menginginkan batu terus bergerak setelah
keluar area permainan, karena program akan terus menerus memprosesnya.
Oleh karena itu cek posisi batu ketika keluar dari area layar. Kemudian kita
Modul Membuat Game dengan Unity3D Engine - copyright Deni Kurnia.
berikan script untuk mengembalikan posisi batu (sphere) ke koordinat semula
ketika sudah melewati area layar permainan.
Perhatikan gambar 2.67
drag
Y = 5.5
(sphere)bol
Y = -5.5
Gambar 2.67 men-drag sphere sampai dapat koordinat seperti gambar 2.68
Gambar 2.68 koordinat sphere ketika keluar area layar di posisi y=-5.5
Ketika di-play posisi pergerakan batu monoton dalam satu alur lintasan saja. Jelas
dalam sebuah game kondisi ini akan sangat membosankan. Oleh karena itu, kita
perlu menambahkan script agar serangan batu tersebut random/acak posisinya.
Berikut script-nya :
centang
Gambar 2.71 memberi tanda centang pada capsule dan box collider
Coba tekan play ! seharusnya setiap peluru yang ditembakkan mengenai sphere
(batu) maka nilai akan bertambah 10.
Permasalahan :
Seharusnya, selain nilai player bertambah, batu yang terkena tembakan pun hancur.
Sedangkan sekarang tidak..!
- Buka scriptPeluru.Js
Penambahan script
Sehinggga ketika di-play maka game object batu (sphere) akan hilang/hancur
sewaktu terkena peluru. Kemudian peluru lainnya akan muncul kembali secara
random/acak.
- Berikan nilai seperti pada gambar 2.72 (perhatikan detail nilai-nilai nya)
Penambahan script
Supaya permainan lebih seru, tambahkan efek suara ketika terjadi ledakkan. Ikuti
langkahnya :
drag
- Coba Play !
- Buka scriptPlayer.Js
- Tambahkan baris sebagai berikut :
OK, coba tekan Play ! lalu coba biarkan batu (sphere) mengenai player (cube)
Masalah :
Nyawa yang diberikan sebanyak 3, sehingga apabila terkena serangan batu sebanyak
tiga kali, seharusnya player dianggap kalah. Yang terjadi sekarang adalah, nilai
nyawa teus berkurang menjadi dari 3 menjadi 2, 1, 0, -1, -2 dst…..padahal kita
menginginkan ketika nyawa =0 maka permainan berakhir (game over) !
Solusi :
drag
Scene aktif
drag
Artinya, jika nyawa player kurang atau sama dengan nol, maka load sceneKalah
(coba lihat di - build setting!).
Langkahnya sama ketika membuat menu untuk scene kalah, yaitu sbb :
drag
drag
Langkahnya sama ketika membuat menu untuk scene kalah, yaitu sbb :
drag
- Buat modeling pesawat di 3D Max atau blender, atau anda dapat mencari
model yang gratis di Internet.
- Export model pesawat menjadi format *.fbx, misalnya SimpelShip.fbx
- Simpan kedalam folder Assets bersama material yang dipakainya.
- Klik Cube, lalu pilih Mesh (ingat kuncinya di mesh ini !) kita akan mengganti
mesh cube menjadi mesh pesawat.
- Ganti cube menjadi polySurface1
Sesuaikan
ukuran
pesawat
Klik untuk
mengganti
mesh
Klik untuk
mengganti
material
- Buat tiga buah gambar di photoshop dengan ukuran 1024 x 768 pixel sebagai
berikut, simpan dalam format *.jpeg.
- Gambar ini hanya contoh saja, Anda dapat membuat versi lain yang lebih
bagus !
Klik disini
Pilih
texture
awal.jpeg