Anda di halaman 1dari 66

MULTIMEDIA LABORATORY

Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

MODUL V
UNITY
5.1 Tujuan
1. Praktikan dapat mengenal aplikasi Unity
2. Praktikan dapat memahami komponen-komponen dari Unity
3. Praktikan dapat mendesain game sederhana menggunakan Unity
4. Praktikan dapat memrogram mekanisme game sederhana menggunakan
bahasa C#
5. Praktikan dapat mengenal method dan function dalam pemrograman game
5.2 Alat dan Bahan
1. Laptop/PC
2. Unity
3. Text Editor
5.3 Dasar Teori
5.3.1 Unity

Gambar 5. 1 Unity
Unity merupakan sebuah game engine lintas platform yang dikembangkan
oleh Unity Technologies, yang pertama kali diumumkan dan dirilis pada Juni
2005 saat Apple Inc’s Worldwide Developers Conference sebagai game engine
eksklusif Mac OS X. Dalam perjalanannya, Unity telah secara bertahap
melebarkan layanannya kepada platform desktop, mobile, console, dan virtual
reality. Unity memiliki popularitas tertentu untuk pengembangan game mobile
iOS dan Android dan telah digunakan untuk game seperti Pokemon Go,
Monument Valley, Call of Duty: Mobile, Beat Saber, dan Cuphead. Unity
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

terkenal mudah dipahami dan digunakan oleh pengembang game pemula dan
populer dalam pengembangan game indie.
Ketika pertama kali membuka Unity dan setup project, akan muncul
halaman yang berisikan beberapa window terbuka. Ada lima window utama yang
akan menjadi fokus pengenalan kita dan yang akan paling sering kita gunakan
ketika mengembangkan game menggunakan Unity. Kelima window tersebut
adalah window Scene, Project, Hierarchy, Inspector, dan Game. Secara umum,
berikut adalah penjelasan dari masing-masing window :
a. Scene: Window yang digunakan untuk membangun game kita. Di dalamnya
kita bisa melihat dan mengatur object di dalam sebuah scene.
b. Project: Window yang berisikan seluruh aset yang digunakan untuk
membuat proyek game kita bisa terdiri dari file, script, texture, 3D model,
audio clip, dan lain-lain yang juga disimpan di dalam harddrive komputer
kita.
c. Hierarchy: Window yang berisi game object atau kumpulan game object
yang kita gunakan di dalam scene. Urutan game object bisa kita pindah
posisinya dan bisa kita grupkan menjadi parent and child.
d. Inspector: Window yang menampilkan konteks atau keterangan dari object
atau aset yang sedang kita pilih. Window ini bisa menampilkan informasi
property atau component dari sebuah game object ataupun aset.
e. Game: Window ini digunakan untuk melihat tampilan ketika permainan di
jalankan. Di bagian atas, terdapat tombol play, pause, dan set frame by
frame yang akan ditampilkan pada window Game.
f. Toolbar: Toolbar berisikan tombol yang membantu kita mengatur berbagai
komponen di dalam permainan.
(Sumber: https://www.dicoding.com/blog/mengenal-komponen-pada-user-interface-unity/)

5.3.2 Game Development Life Cycle


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 2 GDLC
Game Development Life Cycle (GDLC) adalah tahapan-tahapan yang
dilakukan secara sistematis untuk membangun sebuah game (permainan digital)
yang umumnya terdiri dari 6 fase utama yaitu inisialisasi, pra-produksi, produksi,
pengujian, rilis versi beta dan rilis versi lengkap. Rangkaian GDLC terkadang
disederhanakan menjadi 3 fase utama yaitu idea/concept, Development, dan
Deployment.
Berikut merupakan 6 fase yang terdapat dalam GDLC:
1. Initiation
Initiation adalah titik inisiasi proyek game development. Awal dari game
development adalah memulai dari ide game. Initiation adalah sesi developer
berkumpul, brainstorming dan berdiskusi mengenai game seperti apa yang
akan dibuat. Proses pengembangan game yang betul – betul serius dimuali
dari proses iterative yang bernama Production Cycle.
2. Pre-Production
Pre-production adalah awal dari production cycle yang berurusan dengan
game design. Pre-production adalah tahap yang vital sebelum proses
production dimulai, karena pada tahap ini dilakukan perancangan game, dan
rencana produksi game. Tahap ini terdiri atas game design yakni
penyempurnaan konsep game + dokumentasinya ( Game Design Document
) dan prototyping yakni pembuatan prototype dari game ( bila game ada ).
3. Production
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Game design dan prototype yang ada pada pre-production disempurnakan


pada production. Artinya, tahap ini memiliki fokus pada menerjemahkan
rancangan game design, concept art, dan aspek – aspek lainnya menjadi
unsur penyusun game. Tahap ini berkutat dengan asset creation,
programming dan integration antara asset dan source code.
4. Testing
Sesuai dengan namanya, testing merupakan pengujian terhadap prototype
build. Pengujian ini dilakukan oleh internal developer team untuk
melakukan usability test dan functionality test.
5. Beta
Saat game selesai dibuat, belum berarti game tersebut akan diterima oleh
massa. Eksternal testing, dikenal dengan istilah beta testing dilakukan untuk
menguji keberterimaan game dan untuk mendeteksi berbagai error dan
keluhan yang dilemparkan oleh third party tester. Beta berada diluar
production cycle, tetapi hasil dari testing ini berpotensi menyebabkan tim
mengulangi production cycle lagi.
6. Release
Game yang sudah selesai dibuat dan lulus beta testing menandakan game
tersebut siap untuk dirilis ke publik. Release adalah tahap dimana final build
dari game resmi dirilis.
(Sumber: http://repository.unpas.ac.id/14397/3/BAB%201_123040268.pdf)

5.3.3 C# (C Sharp)
C# (dibaca: C Sharp) merupakan sebuah bahasa
pemrograman yang berorientasi objek yang dikembangkan oleh Microsoft sebagai
bagian dari inisiatif kerangka .NET Framework. Bahasa pemrograman ini dibuat
berbasiskan bahasa C++ yang telah dipengaruhi oleh aspek-aspek ataupun fitur
bahasa yang terdapat pada bahasa-bahasa pemrograman lainnya
seperti Java, Delphi, Visual Basic, dan lain-lain dengan beberapa penyederhanaan.
(Sumber: https://id.wikipedia.org/wiki/C_Sharp_(bahasa_pemrograman))
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

5.4 Langkah Kerja


5.4.1 Mempersiapkan Project
1. Buka Unity Hub dan buat project Unity dengan template 2 Dimensi.

Gambar 5. 3 Buat project baru


2. Buka Asset Store Unity di browser dan cari Free Platform Game Asset
kemudian klik tombol add to my assets.

Gambar 5. 4 Men-download Free Platform Game Asset


3. Kembali ke Unity Editor dan buka package manager dengan membuka tab
Window > Package Manager
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 5 Membuka package manager


4. Pilih My Assets pada package kemudian download Free Platform Game
Assets kemudian download

Gambar 5. 6 Men-Download Free Platform Game Assets


5. Setelah download selesai klik import
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 7 Import Free Platform Game Assets


6. Berikutnya install Cinemachine dengan membuka package manager
kemudian pilih Unity Registry

Gambar 5. 8 Memilih Unity Registry


7. Pilih Cinemachine kemudian klik install

Gambar 5. 9 Install Cinemachine


5.4.2 Membuat User Interface
1. Buatlah folder baru di dalam folder Assets bernama “Prefabs” dan “Script”
untuk menyimpan prefab dan script pada game
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 10 Membuat folder baru


2. Selanjutnya adalah pembuatan antarmuka menu Start. Buka folder scenes
kemudian rename file sample menjadi StartMenu seperti gambar

3. Berikutnya adalah menambahkan background ke Start menu. Buka folder


BayatGames > Background > background > png > 1920x1080 >
background kemudian pilih file bernama background dan drag ke bagian
hierarchy.

Gambar 5. 11 Menambah background


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 12 Memasukkan background ke dalam Hierarchy


4. Tambahkan teks dengan klik kanan pada panel hierarchy kemudian pilih UI
> text. Setelah itu beri nama text sebagai “Welcome Text”

Gambar 5. 13 Menambahkan text pada panel hierarchy


5. Agar UI tidak pecah, select Canvas pada hierarchy kemudian pergi ke panel
inspector dan ubah scale factor menjadi 4
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 14 Mengubah scale factor


6. Select Welcome text pada hierarchy dan pergi ke inspector, ubah text
menjadi seperti gambar.

Gambar 5. 15 Mengubah teks


7. Pergi ke panel inspector kemudian ubah posisi x dan y dari welcome text
menjadi 0
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 16 Mengubah posisi teks


8. Ubah ukuran teks dengan pergi ke panel inspector dan mengubah scale
menjadi seperti gambar.

Gambar 5. 17 Mengubah ukuran teks


9. Berikutnya buat button dengan klik kanan pada Canvas di hierarchy
kemudian pilih UI > button
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 18 Membuat button pada UI


10. Gunakan move tool dan scale tool untuk menggeser dan mengubah ukuran
button sehingga seperti gambar. Atau gunakan inspector dan masukkan
angka-angka seperti gambar untuk mengubah posisi dan ukurannya.

Gambar 5. 19 Menambahkan button


11. Expand button pada hierarchy kemudian select text di dalamnya dan ubah
teksnya seperti gambar
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 20 Mengubah teks pada button


12. Tekan tombol play yang berada di bagian tengah atas window Unity untuk
melihat hasil UI yang telah dibuat

Gambar 5. 21 Tombol play

Gambar 5. 22 Tampilan UI sementara


13. Jika tampilan tampak berbeda, ubahlah aspek layar seperti gambar
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 23 Mengubah aspek layar


14. Klik kembali tombol play untuk menghentikan preview. Buka folder assets
> scripts, kemudian tambahkan script baru dengan cara klik kanan, create >
C# scripts. Beri nama script dengan nama “OpenScene”

Gambar 5. 24 Menambahkan script baru


15. Klik kanan pada script OpenScene kemudian pilih show in explorer. Setelah
itu buka pada text editor yang dimiliki (Visual Studio Code, Sublime,
notepad++, dll) dan masukkan source code berikut
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 25 Show in explorer

Gambar 5. 26 Memilih text editor


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class OpenScene : MonoBehaviour


{
// Start is called before the first frame update
public void GoToGameplay()
{
SceneManager.LoadScene("Gameplay");
}
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

// Update is called once per frame


void Update()
{

}
}
16. Pada tab hierarchy tambahkan game object baru dengan klik kanan > create
empty dan beri nama “StartMenuController”

Gambar 5. 27 Membuat game object baru


17. Select StartMenuController dan pergi ke tab inspector kemudian add
component. Tambahkan script OpenScene yang baru saja dibuat
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 28 Menambahkan script OpenScene


18. Select button kemudian pergi ke panel inspector dan scroll ke bawah
sehingga menemukan bagian on click(). Tambahkan sebuah on click()
dengan menekan + sehingga terlihat seperti gambar

Gambar 5. 29 Menambahkan on click()


19. Drag StartMenuController ke dalam on click button sehingga terlihat seperti
gambar
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 30 Memasukkan StartMenuController ke dalam on click()


20. Klik combo box bagian function dan pilih open scene > GoToGameplay()

Gambar 5. 31 Memberikan function GoToGameplay()


5.4.3 Membuat Gameplay
1. Buat sebuah scene baru dengan membuka folder Asset > Scenes, kemudian
klik kanan > Create > Scene dan beri nama scene baru yaitu Gameplay
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 32 Membuat scene Gameplay


2. Double click scene Gameplay agar tampil dalam hierarchy

Gambar 5. 33 Menampilkan scene Gameplay dalam hierarchy


3. Pilih asset background dengan membuka folder Assets > BayatGames >
Free Platform Game Assets > Backgrounds > Background > png >
1920x1080 > Background dan drag file background ke hierarchy
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 34 Memasukkan background ke hierarchy


4. Untuk mempermudah urutan layer pada game, kita akan menggunakan
sorting layer pada penggunaannya. Klik Layers kemudian pilih Edit Layers.
Klik sorting layer pada panel inspector background, tambahkan 3 buah
sorting layer baru. Beri nama “Background”, “Foreground”, dan
“Characters”. Atur urutan layer seperti berikut.

Gambar 5. 35 Meng-edit layers


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 36 Layer baru dan urutannya


5. Select background pada hierarchy dan tambahkan komponen sorting group
pada panel inspector. Masukkan sorting layer-nya sebagai background
seperti gambar

Gambar 5. 37 Menambahkan sorting group


6. Buat sebuah empty object dengan klik kanan pada panel hierarchy > create
empty dan berikan nama “Grass”

Gambar 5. 38 Menambahkan empty object bernama Grass


7. Lalu ambahkan asset tiles dengan ukuran 256x256 ke dalam object Grass
dengan membuka folder Assets > BayatGames > Free Paltform Game
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Assets > Tiles > 2.5D Tiles dan pilih tiles autumn, winter, atau spring
berukuran 256x256. Untuk mengatur agar Object terlihat di depan layer,
gunakan sorting layer Foreground pada Inspector-nya.

Gambar 5. 39 Menambahkan sorting group pada object grass


8. Susun tiles yang ada sehingga tampilan menjadi seperti ini

Gambar 5. 40 Susunan tiles dalam scene Gameplay


9. Berikutnya tambahkan empty object lagi pada Gameplay dengan nama
Water dan berikan sorting group dengan layer background. Tambahkan aset
water dengan membuka folder Assets > BayatGames > Free Paltform
Game Assets > Water Animation > 2D View > 256x256 kemudian susun
seperti gambar berikut
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 41 Menambahkan Water Animation


10. Kemudian kita akan membuat Grass menjadi sebuah object bervolume yang
tidak dapat ditembus. Select semua object yang ada di dalam empty object
“Grass” dengan menggunakan Shift kemudian pada panel inspector klik Add
Component → Box Collider 2D.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 42 Memberikan Box Collider 2D


11. Selanjutnya kita akan memasukkan karakter ke dalam tampilan scene.
Pilihlah asset pada bagian character animation → idle → blink → 2x.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 43 Menambahkan character


12. Setelah itu cek panel inspector dan ubah sprite mode menjadi multiple.
Apabila sudah, klik sprite editor.

Gambar 5. 44 Mengubah Sprite Mode menjadi multiple


13. Selanjutnya menu sprite editor akan muncul. Pilihlah slice untuk memotong
sprite menjadi beberapa bagian dengan setting automatic. Apabila sudah,
klik slice.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 45 Sprite Editor

Gambar 5. 46 Memilih slice


14. Kemudian close menu sprite editor dan pilih apply. Sekarang apabila kita
mengklik gambar segitiga pada asset 2x maka akan muncul banyak gambar
di dalamnya.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 47 Sprite setelah slice


15. Selanjutnya pilihlah gambar 2x_0 dan drag ke dalam panel hierarchy.
Kemudian rename gambar tersebut menjadi Player. Scale ukuran player
sesuai keinginan. Aturlah agar Karakter termasuk ke dalam sorting layer
Characters.

Gambar 5. 48 Menambah layer chatacter ke obyek Player


16. Lalu kita akan membuat player dapat bergerak dan dimainkan. Untuk itu
tambahkan komponen pada panel inspector dengan cara klik Add
Component → Rigidbody 2D.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 49 Menambah script Rigidbody 2D


17. Sekarang cobalah tekan tombol play yang ada pada atas layar scene. Apakah
playermu jatuh menembus tanah?
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 50 Player masih jatuh


18. Apabila player jatuh menembus tanah, maka kita perlu menambahkan
komponen lagi agar ia memiliki garis objek yang tidak dapat tembus. Untuk
itu, klik Add Component → Polygon Collider 2D.

Gambar 5. 51 Menambahkan Polygon Collider 2D


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

19. Jika sudah, maka player akan dapat berdiri dengan tegap di atas tanah. Akan
tetapi, player masih belum dapat bergerak seperti bagaimana seharusnya.
Untuk menggerakkan player, buat script baru bernama “PlayerControl”
dengan cara Klik Kanan → Create → C# Script.

Gambar 5. 52 Membuat script PlayerControl


20. Buka script dengan text editor pilihanmu dan masukkan source code
berikut:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControl : MonoBehaviour


{
private Rigidbody2D myRigidbody;
private bool facingRight;
private PolygonCollider2D polygoncollider2D;

[SerializeField]
private LayerMask platformsLayerMask;

[SerializeField]
private float movementSpeed;
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

private void Awake(){


polygoncollider2D =
transform.GetComponent<PolygonCollider2D>();
}
// Start is called before the first frame update
void Start()
{
facingRight = true;
myRigidbody = transform.GetComponent<Rigidbody2D>();
}

// Update is called once per frame


void Update()
{
//if(IsGrounded() && Input.GetKeyDown(KeyCode, Space))
if(IsGrounded() && Input.GetButtonDown("Jump"))
{
float jumpVelocity = 10f;
myRigidbody.velocity = Vector2.up*jumpVelocity;
}
}

private bool IsGrounded()


{
RaycastHit2D raycastHit2d =
Physics2D.BoxCast(polygoncollider2D.bounds.center,
polygoncollider2D.bounds.size, 0f, Vector2.down, 0.1f,
platformsLayerMask);
return raycastHit2d.collider != null;
}

void FixedUpdate()
{
float horizontal = Input.GetAxis("Horizontal");

HandleMovement(horizontal);

Flip(horizontal);
}

private void HandleMovement(float horizontal)


{
myRigidbody.velocity = new
Vector2(horizontal*movementSpeed, myRigidbody.velocity.y);
}

private void Flip(float horizontal)


{
if(horizontal > 0 && !facingRight || horizontal < 0 &&
facingRight)
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

theScale.x *= -1;
transform.localScale = theScale;
}
}
}
21. Setelah itu, tambahkan script PlayerControl dengan cara men-drag script
PlayerControl ke dalam Panel Inspector atau mengklik Add Component →
PlayerControl pada panel Inspector Player.

Gambar 5. 53 Memasukkan script PlayerControl pada obyek Player


22. Kemudian tambahkanlah Layer pada Panel Inspector. Buatlah 3 layer baru
seperti berikut.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 54 Menambahkan layer


23. Masukkan semua Object yang berada di Grass ke dalam Layer Platforms.

Gambar 5. 55 Mengubah Layer object Grass menjadi Platforms


24. Kemudian kembali ke Object Player. Pada komponen script PlayerControl,
aturlah pengaturan seperti berikut.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 56 Pengaturan script PlayerControl pada Player


25. Bukalah menu Edit → Project Settings, kemudian lihatlah pilihan Input
yang ada di dalamnya. Aturlah agar Input pada “Jump” menjadi seperti ini.

Gambar 5. 57 Mengatur Input Manager


26. Setelah itu cobalah untuk play preview game, maka kini Player sudah dapat
digerakkan berjalan ke kanan (tekan “D” atau panah kanan), ke kiri (tekan
“A” atau panah kiri), dan melompat (tekan “W” atau panah atas).
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 58 Preview Game setelah diberikan kendali pada Player


27. Akan tetapi Player yang sudah dapat bergerak masih memiliki gerakan yang
kasar dan gesekan yang bisa membuatnya tersangkut pada Platform. Untuk
mengubahnya, tambahkan sebuah Object baru pada folder Asset → Prefabs
dengan cara Klik Kanan → Create → Physics Material 2D. Kemudian beri
nama “Friction”.

Gambar 5. 59 Membuat Physics Material 2D


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

28. Aturlah agar Friction memiliki nilai friction 0 pada panel Inspector seperti
berikut.

Gambar 5. 60 Mengatur friction pada panel Inspector


29. Kemudian kembali ke panel Inspector Player dan tambahkan Friction ke
dalamnya dengan cara klik drag Friction ke bagian Material Polygon
Collider 2D.

Gambar 5. 61 Menambahkan Friction ke material pada Polygon Collider 2D


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

30. Kini player sudah dapat bergerak dengan baik. Selanjutnya, kita akan
mengatur kamera agar kamera berjalan mengikuti player.

Gambar 5. 62 Preview gameplay sementara


31. Klik menu Cinemachine, pilih Create 2D Camera. Jika Belum ada silahkan
buka Package Manager kemudian search Cinemachine lalu klik install.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 63 Meng-install Cinemachine

Gambar 5. 64 Membuat 2D Camera


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

32. Kemudian drag CM vcam1 ke dalam Main Camera sehingga hierarchy


terlihat seperti ini.

Gambar 5. 65 Hierarchy setelah drag CM vcam1


33. Langkah selanjutnya ialah mengatur CM vcam1 sebagai pengontrol kamera.
Sesuaikan pengaturan pada inspector seperti berikut.

Gambar 5. 66 Pengaturan CinemachineVirtualCamera


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 67 Pengaturan kamera body


34. Jika sudah, tekanlah tombol play dan lihat hasilnya. Kamera akan bergerak
mengikuti Player kemanapun Player pergi.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 68 Kamera mengikuti saat Player melompat

Gambar 5. 69 Kamera mengikuti saat Player turun


35. Langkah berikutnya kita akan merapihkan dan memperluas Background.
Untuk itu, buatlah sebuah Empty Object yang dinamakan “Background
Parent” pada panel Hierarchy.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 70 Membuat obyek kosong baru


36. Masukkan obyek Background, Grass, dan Water ke dalam Background
Parent

Gambar 5. 71 Memasukkan Background, Grass, dan Water ke dalam obyek baru


37. Kemudian Duplicate Background, Grass, dan Water sehingga hasil
duplicate berada di dalam Background Parent.

Gambar 5. 72 Menduplikasi child Background Parent


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 73 Tampilan game setelah latar diduplikasi


38. Selanjutnya kita akan membuat pembatas pada platform agar Player tidak
jatuh serta kamera tidak men-shoot area Platform yang tidak memiliki
background. Untuk itu, pertama-tama kita tambahkan sebuah Empty Object
pada panel Hierarchy bernama “CamLimiter”. Tambahkan komponen
Polygon Collider 2D kemudian aturlah agar garis polygon mengelilingi
Background dengan menggunakan Edit Collider. Checklist juga bagian
IsTrigger yang berada di bawah Material.

Gambar 5. 74 Membuat empty object baru


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 75 Setelah Edit Collider

Gambar 5. 76 Pengaturan Polygon Collider 2D


39. Selanjutnya tambahkan Extension Cinemachine Confiner pada Object CM
vcam1 (terdapat di panel Inspector CM vcam1 bagian terbawah). Isikan
Bounding Shape 2D dengan CamLimiter, serta checklist pilihan Confine
Screen Edges.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 77 Menambah CinemachineConfiner

Gambar 5. 78 Pengaturan Cinemachine Confiner


40. Untuk membuat Player memiliki batas gerak, buatlah sebuah sprite baru
pada folder Prefabs. Klik Kanan create > 2D > Sprites > Square dan ubah
namanya menjadi PlatformLimiter. Selanjutnya drag sprite tersebut ke
panel Hierarchy.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 79 Membuat sprite baru

Gambar 5. 80 Memasukkan PlatformLimiter ke hierarchy


41. Kemudian tambahkan komponen Box Collider dengan Add Component →
Box Collider.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 81 Box Collider 2D


42. Duplicate Object Platform Limiter menjadi 4 buah, kemudian aturlah
dengan menggunakan scale tool agar Platform Limiter berbentuk seperti
balok yang mengelilingi Background.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 82 Mengatur PlatformLimiter


Kini Player dan kamera sudah memiliki batas ruang gerak sehingga apabila
kita mencoba preview play game, maka tampilan game sudah terlihat bagus
dan tertata.
43. Berikutnya kita akan menambahkan sebuah peluru yang dapat ditembakkan
oleh Player. Untuk membuat peluru, Klik Kanan → Create → 2D → Sprite
→ Circle. Beri nama “Bullet”.

Gambar 5. 83 Membuat sprite Bullet


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 84 Hasil pembuatan sprite


44. Kemudian drag “Bullet” ke panel Hierarchy seperti berikut. Berikanlah ia
pengaturan warna dan ukuran serta sorting layer pada Panel Inspector.

Gambar 5. 85 Memasukkan Bullet ke dalam inspector


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 86 Pengaturan Inspector pada Bullet


45. Tambahkan komponen Polygon Collider 2D dan Rigidbody 2D pada Bullet.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 87 Menambahkan Rigidbody 2D dan Polygon Collider 2D


46. Selanjutnya buatlah Script baru pada folder Script dengan nama
BulletScript. Bukalah script dengan text editor dan masukkan code berikut.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BulletScript : MonoBehaviour


{
public float timer;
public float velX = 5f;
float velY = 0f;
Rigidbody2D rb;

// Start is called before the first frame update


void Start()
{
rb = GetComponent<Rigidbody2D>();
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

// Update is called once per frame


void Update()
{
rb.velocity = new Vector2(velX, velY);
timer += 1.0f*Time.deltaTime;
if(timer >= 3)
{
Destroy(gameObject);
}
}
}
47. Tambahkan script tersebut ke dalam object Bullet dengan cara Add
Component > BulletScript. Aturlah velX menjadi 5.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 88 Menambahkan BulletScript ke obyek Bullet


48. Jika sudah, kini duplicate object Bullet pada panel hierarchy. Ubah nama
object Bullet pertama menjadi BullettoRight dan pada object Bullet kedua
ubah nama menjadi BullettoLeft. Aturlah velX pada BullettoLeft menjadi -5
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 89 Mengatur velX BullettoLeft menjadi -5


49. Buatlah 2 buah Prefab kosong di folder Prefabs dengan klik kanan > create
> Prefab dan beri nama Bullet To Right dan Bullet To Left. Setelah itu,
Drag kedua object Bullet ke dalam Prefabs yang telah dibuat sehingga
Object Bullet to Right dan Bullet to Left menjadi prefab. Kemudian
hapuslah object Bullet to Right dan Bullet to Left yang ada di hierarchy

Gambar 5. 90 Membuat dua Prefab baru


50. Untuk membuat Bullet dapat ditembakkan Player, bukalah Script
PlayerControl dan ganti code dengan code berikut di dalamnya
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControl : MonoBehaviour


{
private Rigidbody2D myRigidbody;
private bool facingRight;
private PolygonCollider2D polygoncollider2D;

[SerializeField]
private LayerMask platformsLayerMask;

[SerializeField]
private float movementSpeed;

public GameObject BullettoRight, BullettoLeft;


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Vector2 bulletPos;
public float fireRate = 0.5f;
float nextFire = 0.0f;

private void Awake()


{
polygoncollider2D =
transform.GetComponent<PolygonCollider2D>();
}
// Start is called before the first frame update
void Start()
{
facingRight = true;
myRigidbody = transform.GetComponent<Rigidbody2D>();
}

// Update is called once per frame


void Update()
{
//if(IsGrounded() && Input.GetKeyDown(KeyCode, Space))
if(IsGrounded() && Input.GetButtonDown("Jump"))
{
float jumpVelocity = 10f;
myRigidbody.velocity = Vector2.up*jumpVelocity;
}

if(Input.GetKeyDown(KeyCode.Space) && Time.time >


nextFire)
{
nextFire = Time.time + fireRate;
fire();
}
}

private bool IsGrounded()


{
RaycastHit2D raycastHit2d =
Physics2D.BoxCast(polygoncollider2D.bounds.center,
polygoncollider2D.bounds.size, 0f, Vector2.down, 0.1f,
platformsLayerMask);
return raycastHit2d.collider != null;
}

void FixedUpdate()
{
float horizontal = Input.GetAxis("Horizontal");

HandleMovement(horizontal);

Flip(horizontal);
}

private void HandleMovement(float horizontal)


{
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

myRigidbody.velocity = new
Vector2(horizontal*movementSpeed, myRigidbody.velocity.y);
}

private void Flip(float horizontal)


{
if(horizontal > 0 && !facingRight || horizontal < 0 &&
facingRight)
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}

void fire()
{
bulletPos = transform.position;
if(facingRight)
{
bulletPos += new Vector2(+1f, -0.08f);
Instantiate(BullettoRight, bulletPos,
Quaternion.identity);
}
else
{
bulletPos += new Vector2(-1f, -0.08f);
Instantiate(BullettoLeft, bulletPos,
Quaternion.identity);
}
}
}
51. Selanjutnya akan muncul field baru pada Inspector Player bagian
PlayerControl script. Drag prefab Bullet To Left dan Bullet To Right sesuai
tempat masing-masing. Jika sudah tes dengan cara play preview game
kemudian tekan key “space” untuk menembakkannya.

Gambar 5. 91 Menempatkan Prefab di tempat masing-masing


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 92 Menembakkan peluru yang telah dibuat


52. Kini kita akan menambahkan musuh pada game sebagai obyek sasaran yang
akan ditembak oleh Player. Untuk menambahkan musuh, drag asset Mace
yang ada pada folder enemies dengan ukuran 128.128 ke hierarchy. Beri
nama Enemy.

Gambar 5. 93 Mengambil Mace sebagai enemy


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 94 Menempatkan enemy pada hierarchy


53. Setelah itu tambahkan komponen RigidBody 2D dan Polygon Collider.
Aturlah komponen Sprite Renderer, Polygon Collider, dan Rigidbody 2D
seperti berikut.

Gambar 5. 95 Aturan sprite renderer


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 96 Pengaturan Rigidbody 2D dan Polygon Collider 2D


54. Buatlah sebuah script baru pada folder Scripts yang akan mengatur
munculnya Enemy pada game. Beri nama script tersebut “EnemyScript”

Gambar 5. 97 Menambahkan script EnemyScript


55. Masukkan kode berikut pada EnemyScript
using System.Collections;
using System.Collections.Generic;
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

using UnityEngine;

public class EnemyScript : MonoBehaviour


{

public GameObject Enemy;


public float spawnTime = 2f;
public float fallSpeed = 40.0f;
private float timer = 0;
private int randomNumber;

// Start is called before the first frame update


void Start()
{

// Update is called once per frame


void Update()
{
timer += Time.deltaTime;
if(timer > spawnTime)
{
SpawnRandom();
timer = 0;
}
}

public void SpawnRandom()


{
Vector3 screenPosition =
Camera.main.ScreenToWorldPoint(new Vector3(Random.Range(0,
Screen.width),
Random.Range(400,Screen.height),Camera.main.farClipPlane/2));
Instantiate(Enemy, screenPosition, Quaternion.identity);
}
}
56. Buat sebuah prefab kosong pada folder Prefabs kemudian drag object
Enemy ke dalam prefab kosong tersebut dan hapus object Enemy yang ada
pada hierarchy.

Gambar 5. 98 Membuat prefab Enemy


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

57. Buatlah sebuah object baru kosong dengan cara klik kanan > create empty,
beri nama “EnemySpawner”. Letakkan object di atas layar

Gambar 5. 99 Membuat object EnemySpawner

Gambar 5. 100 Menempatkan object EnemySpawner di atas game scene


58. Tambahkan komponen baru pada EnemySpawner dalam panel inspector.
Klik add component > Enemy Script

Gambar 5. 101 Menambahkan Enemy Script pada EnemySpawner


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

59. Drag prefab Enemy ke dalam slot Enemy di dalamnya. Apabila sudah,
cobalah play preview game maka Enemy akan berjatuhan dari atas.

Gambar 5. 102 Menambahkan prefab Enemy ke Enemy Script

Gambar 5. 103 Enemy yang bermunculan


60. Kini kita akan membuat peluru yang ditembakkan oleh Player dapat
menghilangkan Enemy ketika terkena peluru. Untuk itu, tambahkanlah tag
yang terdapat pada Inspector seperti berikut dengan cara klik add tag.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 104 Add tag

Gambar 5. 105 Membuat tag baru


61. Kemudian bukalah prefab Enemy dan tambahkan tag sebagai “Enemigo”.
Bukalah juga prefab Bullet To Left dan Bullet To Right dan tambahkan tag
sebagai “Bullet”.
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 106 Menambahkan tag enemigo pada prefab Enemy


MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

Gambar 5. 107 Menambahkan tag bullet pada prefab Bullet To Right dan Bullet To Left
62. Apabila sudah bukalah Script BulletScript dengan text editor kemudian
tambahkan kode berikut pada bagian bawah void Update().
void OnCollisionEnter2D(Collision2D col)
{
if(col.gameObject.CompareTag("enemigo"))
{
Destroy(col.gameObject);
Destroy(gameObject);
MULTIMEDIA LABORATORY
Computer Engineering
Diponegoro University Semarang
JL. Prof.Sudharto, SH – Tembalang Semarang
Jawa Tengah

}
}
Cobalah preview game. Kini Player sudah dapat menembakkan Bullet ke
arah Enemy dengan efek Enemy akan menghilang jika terkena Bullet

Anda mungkin juga menyukai