1
1
A. TUJUAN
- Mahasiswa dapat menggunakan inventory GUI sebagai pengolah nilai variable dinamis
menggunakan Unity
- Mahasiswa dapat menggunakan asset yang telah disediakan untuk membuat game di
Unity
- Mahasiswa dapat membuat game sederhana untuk mengambil satu object dan
menampilkan nilainya dalam bentuk teks maupun single icon
- Mahasiswa dapat mengambil satu object beberapa kali dan menampilkan hasilnya
dalam bentuk total teks maupun multiple status icon
B. PETUNJUK
1. Awali setiap kegiatan praktikum dengan berdoa
2. Baca dan pahami tujuan, dasar teori, dan latihan-latihan praktikum dengan baik
3. Kerjakan tugas-tugas praktikum dengan baik, sabar dan jujur
4. Tanyakan kepada dosen apabila ada hal-hal yang kurang jelas
D. DASAR TEORI
Pada hampir semua game development, hampir tidak bias terlepas dari nilai-nilai inventory
dinamis yang merupakan hasil koleksi item item tertentu. Beberapa contohnya antara lain
mendapatkan kunci untuk membuka pintu, mengumpulkan peluru untuk senjata, koin dan bintang
untuk score, item hati atau medical kit untuk life atau health.
Modul ini akan mengajarkan pada mahasiswa solusi untuk menampilkan pada player apakah
karakter sudah mendapatkan item yang telah diambil atau disentuh, dan berapa banyak item
yang mereka miliki.
Terdapat dua bagian design perangkat lunak untuk mengimplementasikan inventory. Pertama,
bagaimana kita memilih untuk merepresentasikan data dari item inventory (tipe dan struktur data).
Kedua, bagaimana kita memilih untuk menampilkan informasi tentang inventory pada player (User
Interface).
Langkah awal yang perlu diketahui adalah beberapa sifat dasar dari item inventory pada game:
1. Single items:
Contoh: satu-satunya kunci untuk naik level dan pakaian sihir.
Tipe data : Boolean (True / False)
UI : tidak ditampilkan (jika False) atau text/image (True). Dapat juga dituliskan no key
/ key, atau dua gambar dimana gambar pertama menampilkan saat False dan gambar
kedua saat True.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
2. Continues items:
Contoh: Waktu tersisa, health / life, kekuatan shield
Tipe data: Float (0,00.1,00) atau integer skala (0% .. 100%)
UI: nilai angka atau progress bar/ chart pie.
3. Dua atau lebih item yang sama
Contoh: lives / nyawa tersisa, jumlah anak panah atau peluru yang tersisa
Tipe data: integer
UI : nilai angka atau gambar
4. Kumpulan dari item yang saling terkait
Contoh: kunci yang berbeda-beda warna untuk membuka pintu dengan warna yang
sesuai, ramuan untuk kemampuan tertentu.
Struktur data: struct atau class dari tipe umum item (contoh, class
Key(color/cost/doorOpenTagString), disimpan sebagai array atau List.
UI : list teks atau grid list
5. Kumpulan dari item yang berbeda
Contoh: kunci, koin, hati, bintang, ramuan, senjata, tool semua yang jadi satu
kesatuan system inventory.
Struktur Data: List<> atau Dictionary<> atau array object, yang merupakan instances
dari class yang berbeda untuk tiap tipe item.
E. LATIHAN PRAKTIKUM
1. Menyiapkan Scene / Environment
Membuat Aplikasi Mini-Game sederhana 2D SpaceGirl
Mempersiapkan environment game
Untuk membuat game ini, anda membutuhkan beberapa gambar pada folder
1362_02_01/Sprites.
3. Set ukuran layar player menjadi 800 x 600. Edit -> Project Settings -> Player, pada opsi
Resolution and Presentation, uncheck Default is Full Screen.
5. Tampilkan Tags & Layers dengan cara pilih Edit -> Project Settings -> Tags and Layers.
Pada bagian Inspector, expand Sorting Layers. Gunakan tanda + pada Sorting Layers
dan tambahkan dua layer baru dengan nama Background dan Foreground.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
6. Drag background-blue dari panel project kedalam Game atau Hierarchy untuk
membuat gameObject.
7. Set Sorting Layer dari GameObject background-blue menjadi Background (pada
komponen Sprite Renderer)
8. Drag Gambar Star ke GameObject. Tambahkan Tag Star pada Inspector Tags & layers.
Set Tag dari Star Object menjadi Star.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
9. Tambahkan Box Collider 2D pada gameObject Star (Add Component -> Physics 2D ->
Box Collider 2D) dan check pada Is Trigger.
10. Tambahkan girl1 ke dalam gameObject, rename menjadi Player SpaceGirl. Sorting
layer ubah menjadi Foreground. Tambahkan Box Collider 2D. Tambahkan Rigidbody
2D (Add Component -> Physics 2D -> RigidBody 2D). Set Gravity Scale menjadi 0 agar
tidak jatuh kebawah layar karena simulasi gravitasi.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
11. Buat Folder baru untuk menyimpan script dan beri nama Script.
12. Buat C# Script PlayerMove (dalam folder Script) dan tambahkan dalam GameObject
Player SpaceGirl:
using UnityEngine;
using System.Collections;
public class PlayerMove : MonoBehaviour
{
public float speed = 10;
private Rigidbody2D rigidBody2D;
void Awake()
{
rigidBody2D = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
float xMove = Input.GetAxis("Horizontal");
float yMove = Input.GetAxis("Vertical");
float xSpeed = xMove * speed;
float ySpeed = yMove * speed;
Vector2 newVelocity = new Vector2(xSpeed, ySpeed);
rigidBody2D.velocity = newVelocity;
}
}
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
13. Simpan Scene dengan nama Main Scene ke dalam folder Scenes. Coba jalankan
program dengan menekan tombol play dibagian tengah atas. Jika anda dapat
menggerakkan player menggunakan tombol panah atau WASD, maka package telah
siap dipakai. Tidak akan terjadi apa-apa saat Player menyentuh bintang karena belum
ada action yang dilakukan saat terjadi tumbukan dengan bintang. Pelajari Script
PlayerMove baik-baik.
14. Karena akan membuat 4 skenario mini game seperti yang telah dituliskan pada dasar
teori, maka export package scene yang telah dibuat dan beri nama sembarang (Asset -
> Export Package.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
2. Tampilkan pengambilan objek tunggal dengan teks membawa atau tidak membawa
1. Buat New Project 2D kosong. Import Package dari Scene yang telah dibuat
sebelumnya (Asset -> Import Package -> Custom Package). Set Ukuran layar 800 x
600. Set Game aspect ratio juga di 800 x 600. Pilih Scene utama. Jangan lupa buat
sorting layer Background dan Foreground, dan set sorting layer tiap gameObject
sesuai layernya (star disorting layer foreground, dsb).
2. Tambahkan UI Object Text (Create -> UI -> Text). Ubah namanya menjadi Text-bawa-
bintang. Kemudian ubah isi textnya menjadi Bawa Bintang : Tidak.
3. Import Font dari folder 1362_02_02 kedalam project. Set font dari Text-bawa-bintang
menjadi Xolonium-Bold, warna kuning, ukuran 32, tinggi 50.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
6. Pada Inspector Player dalam GameObject Player SpaceGirl, pilih Star Text dan tunjuk
Text-bawa-bintang
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
7. Jalankan scene-nya, jika anda melihat hasil seperti screenshot berikut maka anda
telah berhasil. Pelajari Script Player dengan baik.
8. Pola desain game (pendekatan praktis terbaik) dinamakan pola MVC (Model-View-
Controller) adalah memisahkan script yang meng-update UI dengan script yang
mengubah player dan variable game seperti score dan daftar inventory. Hal ini
dilakukan agar arsitektur game yang dibuat terstruktur dengan baik dan mudah
diperbaiki. Untuk melakukan pemisahan pola View, berikut adalah beberapa langkah
yang dipakai:
1. Buat Script PlayerInventoryDisplay untuk gameObject Player-SpaceGirl. Set
StarText menjadi : Text-bawa-bintang
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
playerInventoryDisplay.OnChangeCarryingStar(carryingStar);
Destroy(hit.gameObject);
}
}
}
1. Buat New Project 2D kosong. Import Package dari Scene yang telah dibuat
sebelumnya di E.1. (Asset -> Import Package -> Custom Package). Set Ukuran layar
800 x 600. Set Game aspect ratio juga di 800 x 600. Pilih Scene utama. Jangan lupa
buat sorting layer Background dan Foreground, dan set sorting layer tiap gameObject
sesuai layernya (star disorting layer foreground, dsb).
2. Pada Panel Hierarchy, tambahkan UI Image, ubah namanya menjadi Image-star-icon.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
3. Drag sprite icon_no_star_100 (di folder sprites) ke source image dari object Image-
star-icon.
4. Klik tombok Set Native Size pada component image.
7. Pada Player Component dari Player-SpaceGirl, isikan object image-no-star pada Star Image
field. Pada field Icon Star isikan dengan icon_star_100 dari folder Sprites, pada field Icon No
Star isikan dengan icon_no_star_100 dari folder sprites.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
1. Buat New Project 2D kosong. Import Package dari Scene yang telah dibuat
sebelumnya di E.1. (Asset -> Import Package -> Custom Package). Set Ukuran layar
800 x 600. Set Game aspect ratio juga di 800 x 600. Pilih Scene utama. Jangan lupa
buat sorting layer Background dan Foreground, dan set sorting layer tiap gameObject
sesuai layernya (star disorting layer foreground, dsb).
2. Tambahkan UI teks baru. Ubah namanya menjadi Text-bawa-bintang. Ubah teksnya
menjadi Bintang = 0
3. Tambahkan font yang sama digunakan pada E.2 ke dalam project ini, set font Text-
bawa-bintang menjadi Xolonium Bold, ukuran 32, alignment vertical center,
horizontal center, posisikan rect transform Top-stretch, dengan height 50.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
5. Pada field Star text di component Player pada gameObject Player-SpaceGirl, isikan Text-
bawa-bintang.
1. Buat New Project 2D kosong. Import Package dari Scene yang telah dibuat
sebelumnya di E.1. (Asset -> Import Package -> Custom Package). Set Ukuran layar
800 x 600. Set Game aspect ratio juga di 800 x 600. Pilih Scene utama. Jangan lupa
buat sorting layer Background dan Foreground, dan set sorting layer tiap gameObject
sesuai layernya (star disorting layer foreground, dsb).
2. Tambahkan script player pada gameObject Player-SpaceGirl. Berikut scriptnya:
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Player : MonoBehaviour
{
private PlayerInventoryDisplay playerInventoryDisplay;
private int totalStars = 0;
void Start()
{
playerInventoryDisplay = GetComponent < PlayerInventoryDisplay >
();
}
void OnTriggerEnter2D(Collider2D hit)
{
if (hit.CompareTag("Star"))
{
totalStars++;
playerInventoryDisplay.OnChangeStarTotal(totalStars);
Destroy(hit.gameObject);
}
}
}
3. Buat duplikat gameObject star sebanyak 3 dan tempatkan seseuai keinginan anda.
5. Buat UI image baru dan beri nama Image-star0. Pilih Image-star0 dari gamObject, pada field
source image drag sprite icon_star_grey_100 dari sprite folder. Klik Set Native Set. Set posisi
pada kotak Top-Left.
PRAKTIKUM MULTIMEDIA TERAPAN Jurusan Teknologi Informasi
6. Duplicate Image-star0 menjadi tiga image lagi dengan nama Image-star1, Image-star2, dan
Image-star3. Posisikan bersebelahan.
7. Pilih gameObject Player-SpaceGirl. Akses komponen Player Inventory Display dan set
property size pada Star Placeholders menjadi 4. Isikan elemen 1, 2, 3, dan 4 dengan UI
image Image-star0,1,2, dan 3. Set icon Star Yellow dgn icon_star_100, dan icon Star Grey
dengan icon_star_grey_100.
b. http://kenney.nl/assets
c. http://www.gameart2d.com/freebies.html