Kali ini kita akan membuat efek ledakan keren saat mush terkena tembakan. Untuk itu kita akan menggunakan feature particle system yang ada di unity. Berikut adalah video tutorialnya.
Berikut adalah script yang terlibat pada feature ledakan.
Script untuk object Explosion
script diatas berfungsi untuk menghancurkan object Explosion setelah 0.5 detik object tersebut dibuat.
Script untuk Sprite Enemy
Script diatas berfungsi untuk menampilkan efek ledakan di posisi sprite Enemy saat terkena tembakan.
Berikut adalah detail setting dari particle system yang digunakan untuk membuat efek ledakan.
Kali ini kita akan menambahkan fitur animasi untuk game kita. Jika kita memencet tombol right arrow maka animasi kucing berjalan ke kanan akan dilakukan. Jika kita memencet tombol left arrow maka animasi kucing berjalan ke kiri akan dilakukan.
Berikut adalah gambar-gambar yang dibutuhkan untuk animasi berjalan.
Pada gambar diatas, costume 1 dan 2 adalah untuk animasi berjalan ke kanan sedangkan costume 3 dan 4 adalah untuk animasi berjalan ke kiri.
Berikut script pada scratch untuk menambahkan fiture animasi berjalan ke kanan dan ke kiri.
Pada script di atas kita menggunakan variabel baru bernama AnimationId. Jika variabel AnimationId berisi angka 0 maka animasi jalan kanan yang berjalan. Jika variabel AnimationId berisi angka 1 maka animasi jalan kiri yang berjalan. Pada saat tombol right arrow di tekan makan variabel AnimationId diisi dengan angka 0 sedangkan jika tombol left arrow yang ditekan maka variabel AnimationId diisi dengan angka 1.
Pada Unity hal yang serupa akan kita lakukan.
Berikut adalah modifikasi dari fungsi Update dari Script untuk Sprite Kucing
Seperti pada Scratch, saat tombol RightArrow ditekan, variabel animasi bernama AnimationId diisi dengan angka 0. Ini akan menyebabkan animasi bernama AnimWalkRight (kucing jalan ke kanan) akan dijalankan. Saat tombol Left Arrow ditekan, variabel AnimationId diisi dengan angka 1. Ini akan menyebabkan animasi bernama AnimWalkLeft (kucing jalan ke kiri) akan di kerjakan.
Berikut adalah penampakan variabel animasi AnimationId dan animasi AnimWalkRight dan animasi AnimWalkLeft pada user interface Animation di Unity.
Tanda panah dari AnyState menuju AnimWalkRight dinamakan State Transition yang artinya Unity dapat menjalankan animasi AnimWalkRight saat Unity sedang sibuk menjalankan animasi apapun jika kondisi transisi tersebut memenuhi syarat. Dalam hal ini jika AnimationId berisi angka 0 maka kondisi memenuhi syarat dan AnimWalkRight akan segera dijalankan oleh Unity. Hal yang serupa berlaku pula untuk tanda panah dari AnyState menuju AnimWalkLeft.
Berikut adalah setting dari State Transition dari AnyState menuju AnimWalkRight.
Video berikut adalah tutorial bagaimana membuat animasi pada Unity (AnimWalkLeft, AnimWalkRight, AnimationId, dan State Transition) dan menggunakannya bersama script kucing yang ada di atas.
Kali ini kita akan menambah fitur baru yang hanya berlaku untuk Unity yaitu mengontrol Sprite Kucing dengan menggunakan touch screen. Ini diperlukan karena HP dan Tablet android kebanyakan tidak memiliki keyboard oleh karena itu Sprite Kucing hanya bisa dikontrol dengan menggunakan touch screen. Dalam fitur ini terdapat tiga tombol baru di layar.
Tombol Left : jika ditekan Sprite Kucing bergerak ke kiri.
Tombol Right : jika ditekan Sprite Kucing bergerak ke kanan.
Tombol Shoot: jika ditekan Sprite Bola akan ditembakkan oleh Sprite Kucing.
Berikut adalah penampakan game yang sudah jadi.
Script untuk Sprite Kucing:
Pada script di atas kita menambahkan 3 variable baru.
Variabel MoveLeft. Jika berisi angka 1 maka sprite kucing bergerak ke kiri. Variabel ini diisi angka 1 ketika fungsi MoveLeftButtonDown dikerjakan dan diisi angka 0 ketika MoveLeftButtonUp dikerjakan.
Variabel MoveRight. Jika berisi angka 1 maka sprite kucing bergerak ke kanan. Variabel ini diisi angka 1 ketika fungsi MoveRightButtonDown dikerjakan dan diisi angka 0 ketika MoveRightButtonUp dikerjakan.
Variabel Shoot. Jika berisi angka 1 maka sprite kucing akan menembak. Variabel ini diisi angka 1 ketika fungsi ShootButtonDown dikerjakan dan diisi angka 0 ketika ShootButtonUp dikerjakan.
Perhatikan pada script diatas, pada perintah if di fungsi update kita menemukan symbol ||. Symbol tersebut berarti atau. Dengan demikian jika tombol Right Arrowatau variabel MoveRight berisi angka 1 maka gerakkan sprite kucing ke kanan.
Sebelum dijalankan kita harus membuat terlebih dahulu Button UI untuk tombol Left, Right, dan Shoot seperti pada gambar berikut.
Video berikut berisi tutorial bagaimana membuat Button UI untuk tombol Left, Right, dan Shoot dan bagaimana menghubungkan tombol tersebut dengan script dari Sprite Kucing.
Kali ini kita akan memodifikasi program Scratch sehingga game berhenti setelah 20 detik (Game Over). Hitungan mundur dilakukan sejak game mulai dari angka 20, berkurang 1 setiap 1 detik sampai angka 0. Setelah hitungan mundur mencapai angka 0, game berhenti berjalan. Sprite Kucing tidak bisa jalan ke kanan dan kekiri begitu pula tidak ada musuh baru yang dibuat. Berikut penampakan game dengan fitur hitung mundur:
Script untuk Game Manager:
Pada script di atas kita membuat variable baru bernama TimeLeft. Di block CountDown, variabel ini diisi angka 20 kemudian dikurangan 1 setiap detiknya. Jika variable TimeLeft ini telah sama dengan 0 maka game selesai dan perintah stop all dikerjakan. Perintah stop all adalah perintah untuk menghentikan semua script untuk semua Sprite yang ada di program scratch dengan demikian Sprite kucing tidak dapat bergerak dan pembuatan Enemy dihentikan.
Di Unity, kita akan melakukan hal berikut:
Seperti pada Scratch, game akan selesai setelah hitung mundur yang dimulai dari 20 mencapai angka 0. Saat game selesai, tidak boleh ada Sprite yang bisa bergerak dan pembuatan Sprite Enemy juga harus dihentikan.
Saat game selesai kita munculkan tombol Play (Play Button). Jika tombol ini ditekan maka game akan dimulai lagi dari awal. Hal ini perlu dilakukan karena pada Hp atau Tablet Android, tidak ada tombol Start Game seperti yang telah disediakan oleh program Scratch (tombol bendera berwarna hijau). Tombol Play ini akan hilang saat game dimulai.
Berikut penampakan saat game selesai di Unity.
Script untuk Game Manager:
Pada script di atas kita membuat variable baru yaitu TimeLeft. Variabel ini diisi angka 20 pada saat game dimulai (pada fungsi Start). Kemudian pada fungsi CountDown, variabel TimeLeft dikurangi satu setiap selang waktu 1 detik. Jika TimeLeft berisi angka 0 maka kita lakukan hal-hal berikut untuk menyelesaikan game:
Kerjakan fungsi StopAllCoroutines(). Hal ini akan menyebabkan semua Coroutine yang ada pada script ini dihentikan. Coroutine yang ada pada script ini yaitu CreateEnemies dan CountDown dengan demikian pembuatan musuh akan dihentikan begitu juga proses hitung mundur juga dihentikan.
Isi Variable GameOver dengan angka 1. Variabel ini akan digunakan oleh script yang lain untuk mengecek apakah Sprite boleh bergerak atau tidak. Jika berisi angka 0 maka Sprite boleh bergerak (tidak game over), sedangkan jika tidak (GameOver berisi angka 1) maka Sprite tidak boleh bergerak.
Tampilkan tombol Play (variabel PlayButton) dengan menggunakan perinta SetActive(true). Pada saat game dimulai yaitu pada fungsi Start, tombol Play disembunyikan dengan menggunakan perintah SetActive(false). Tombol Play ini harus dihubungkan dengan Play Button UI dengan cara seperti yang diterangkan pada video tutorial di akhir artikel ini.
Pada script di atas fungsi RestartGame adalah fungsi yang akan dikerjakan jika tombol Play diclick. Dalam fungsi tersebut akan dikerjakan fungsi LoadLevel("MainScene") yang bertugas untuk memuat ulang (restart) file scene game kita yang dalam hal ini bernama "MainScene". Lihat video tutorial mengenai cara menghungkan tombol Play dengan fungsi RestartGame pada Game Manager.
Script untuk Sprite Kucing:
Pada script diatas sprite Kucing hanya dapat bergerak dan menembak jika GameOver berisi angka 0 (tidak Game Over).
Script untuk sprite Enemy:
Pada script diatas sprite Enemy hanya dapat bergerak jika GameOver berisi angka 0 (tidak Game Over).
Script untuk Sprite Bola
Pada script diatas sprite Bola hanya dapat bergerak jika GameOver berisi angka 0 (tidak Game Over).
Sebelum game dijalankan terlebih dulu kita harus membuat Text UI untuk Time Left yang akan berisi tulisan hitungan mundur dan juga Button UI untuk tombol Play. Berikut adalah penampakan dari Text UI dan Button UI yang harus dibuat.
Video berikut berisi tutorial mengenai bagaimana membuat Text UI untuk hitungan mundur dan juga membuat tomboll play yang akan digunakan bersama script di atas.
Tugas-6
Perbaharui script game sehingga jika sprite Kucing terkena tembakan atau terkena musuh, game juga selesai (game over). Saat game selesai tidak boleh ada sprite baru yang dibuat dan sprite yang ada yang masih bergerak, semua harus berhenti.
Petunjuk: saat sprite Kucing terkena musuh atau peluru musuh, sprite Kucing mengirim message "HandleGameOver" kepada Game Manager. Fungsi dengan nama yang sama dengan message yang ada pada Game Manager (fungsi HandleGameOver) akan melakukan hal yang sama dengan saat hitung mundur telah mencapai angka 0.
This time we will add following features to our game:
Background picture
Background music that is continuously played.
Sound effect when shooting.
Sound effect when enemy is shot and disappear.
In Scratch, below is how the game will look like after the background picture is added.
For background music, in Scratch, we update the Game Manager to add following script.
For the shooting sound effect, in Scratch, we update the Ball sprite.
For enemy shot sound effect, in Scratch, we update the Enemy sprite.
In Unity we are going to do the same as above.
For shooting sound effect, we update the Ball sprite script.
For the enemy shot sound effect, we update the Enemy sprite script.
For background music that is continuously played, in Unity, we do not need script update. It is enough to add an Audio Source component to the Game Manager with the following setting.
Below video is the tutorial on how to add the background picture, background music, and sound effect in Unity using the above scripts.
Below is the comparison between Scratch and Unity.
Play Sound Effect
In Scratch
In Unity
Assignment-5
Play the different sound effect when the enemy that is moving down (see assignment-1) is touched by the Ball sprite.
Kali ini kita akan menambahkan fitur berikut pada game kita:
Gambar background
Musik background yang diputar terus menerus.
Efek suara saat menembak
Efek suara saat musuh tertembak dan hilang.
Pada Scratch berikut adalah penampakan game yang sudah ditambahkan gambar background.
Untuk musik background, pada Scratch, kita perbaharui Game Manager dengan script berikut.
Untuk efek suara saat menembak, pada Scratch, kita perbaharui script dari Sprite Bola.
Untuk efek suara saat musuh tertembak, pada Scratch, kita perbaharui script dari Sprite Enemy.
Pada Unity kita akan melakukan hal yang sama seperti diatas.
Untuk efek suara saat menembak kita perbaharui Script Bola.
Untuk efek suara saat musuh tertembak, kita perbaharui script Enemy.
Untuk musik background yang diputar terus menerus, pada Unity, kita tidak membutuhkan script. Cukup tambahkan komponen Audio Source pada Game Manager dengan setting sebagai berikut.
Video berikut berisi tutorial bagaimana menambahkan gambar background, musik background, dan efek suara pada Unity menggunakan script yang ada di atas.
Berikut adalah detail perbandingan antara Scratch dan Unity.
Mainkan Efek Suara
Pada Scratch
Pada Unity
Tugas-5
Mainkan efek suara berbeda saat musuh yang bergerak kebawah (lihat tugas-1) terkena Sprite Bola (peluru).
Now we are going to update the Scratch program to add score feature to our game. Each time the enemy that move to the right hits by the Ball Sprite, then the score is increased by 10. The score is shown in the top middle location on the screen as in the following screen.
Script for Enemy Sprite:
Script for Game Manager:
In the above script, the Enemy Sprite sends the "Enemy Hit" message to the Game Manager if it hits by the Ball Sprite (bullet). Upon receiving the "Enemy Hit" message, the Game Manager will add the score with 10.
In Unity, we are going to do the same. Text containing the score value will look like as following picture.
Script for Enemy sprite:
Script for Game Manager:
Just like in Scratch, in Unity, the Enemy sprite shall also send the "EnemyHit" message to the Game Manager. Upon receiving that message, the function whose name is the same as the message name which is the "Enemy Hit" will be executed by the Game Manager. In that function, the score variable will be added with value 10 and also the Text UI will be updated to the latest score value. Text UI (User Interface) is a Unity object that can display text on the screen. Since we are going to use Text UI in our code, don not forget to write the command using UnityEngine.UI; at the top of the script.
Before we run the program, in Unity we shall first create the Text UI that will contain the score text just like the following picture.
Below is the tutorial video on how to create Text UI for the score.
Below picture give detailed explanation on command that updates the Score Text UI.
Assignment 4
Update the program so that the score will be increased by 5 if the enemy that move from top to bottom (see assignment-3) is hit by the Ball Sprite.