Sabtu, 25 Februari 2017

Menembak Dengan Timer

Artikel kali ini adalah lanjutan dari artikel sebelumnya yang berjudul menembak.

Berikut adahal script pada Scratch untuk menembak, dimana menembak hanya dapat dilakukan setelah menunggu 0.5 detik dari tembakan yang terakhir.



Script diatas menggunakan variabel bernama CanShoot. Menembak hanya dapat dilakukan hanya jika variabel CanShoot berisi angka 1. Begitu menembak dilakukan, variabel CanShoot langsung diisi angka 0 sehingga menembak tidak dapat dilakukan. Menembak bisa dilakukan setelah variabel CanShoot kembali diisi angka 1 yaitu setelah menunggu 0.5 detik setelah tembakan terakhir.

Perhatikan bahwa diatas kita menggunakan perintah broadcast StartCoroutine untuk mengerjakan block WaitForCanShoot. Hal ini dilakukan agar program untuk menggerakkan Sprite Kucing ke kiri ke kanan dapat dikerjakan bersamaan dengan program  untuk menunggu tembakan selama 0.5 detik. Dengan demikian Sprite kucing dapat tetap bergerak pada saat Sprite Kucing menunggu 0.5 untuk tembakan selanjutnya.


Hal yang sama dapat dilakukan pada Unity dengan script kucing sebagai berikut:




Berikut adalah detail perbandingan antara script di Scratch dan Unity.

Membuat Variabel

Pada Scratch:


Pada Unity:


Artinya: buat variabel bernama CanShoot dengan tipe Integer. Integer adalah variabel yang berisi bilangan buat seperti -3,-2,-1,0,1,3.

Mengisi Variabel

Pada Scratch:


Pada Unity:



Membandingkan Isi Variabel

Pada Scratch:


Pada Unity:


Perhatikan pada Unity, untuk membandingkan kita menggunakan dua symbol =.

Proses Paralel 

Pada Scratch:

Pada script di atas perintah brodcast StartCoroutine tidak menunggu sampai block WaitForCanShoot selesai dilakukan. Dengan demikian perintah selanjutnya yang ada setelah broadcast Coroutine akan langsung dilaksanakan bersamaan dengan dilaksanakannya block WaitForCanShoot.

Pada Unity:




Menunggu

Pada Scratch:



Pada Unity:


Pada Unity perintah menunggu di atas hanya dapat dilakukan di dalam fungsi yang dipanggil dengan menggunakan StartCoroutine.




Kamis, 23 Februari 2017

Menembak

Kali ini kita akan membuat program yang memiliki fungsi sebagai berikut:
  1. Sprite kucing dapat bergerak ke kiri dan ke kanan jika tomboll panah kanan (right arrow) dan panah kiri (left arrow) ditekan. 
  2. Sprite kucing dapat menembakkan peluru berupa Sprite Bola dengan menekan tombol spasi. 
  3. Sprite Bola bergerak ke atas dari posisi Sprite kucing dan kemudian menghilang di posisi tepi layar bagian atas. 

Pada Scratch kita membutuhkan dua Sprite berikut: Sprite Kucing (Sprite1) dan Sprite Bola (Ball)




Script untuk Sprite Kucing:


Script untuk Sprite Bola:



Pada Unity, fungsi yang sama dengan script Scratch di atas akan kita lakukan dalam dua tahapan.

  • Tahap 1: Menembak tanpa bola menghilang di posisi tertentu. 
  • Tahap 2: Menembak dan bola menghilang di posisi tertentu. 


Tahap 1: Menembak dan Bola Tidak Hilang


Script untuk Sprite Kucing:


Script untuk Sprite Bola:


Untuk lebih detailnya, berikut adalah perbandingan antara script di Scratch dan di Unity yang berhubungan dengan script di atas.

Buat Duplikat Sprite (Create Clone)

Pada Scratch:





Pada script di atas block create clone berfungsi untuk membuat duplikat dari sprite Ball. Kemudian saat pertama kali duplikat atau saat Sprite Ball dibuat (pada block Start), posisi Sprite di set ke posisi yang sama dengan posisi Sprite Kucing. Dengan demikian Sprite Ball akan bergerak mulai dari posisi Sprite Kucing.


Pada Unity:

Sebelum membuat duplikat dari Sprite Bola, kita harus membuat dulu variable dengan tipe Transform sebagai berikut:



Variable BulletPrefab diatas nantinya akan dihubungkan dengan prefab Sprite Bola. Prefab adalah Sprite yang telah di masukkan ke dalam aset (dengan cara di drag) sehingga bisa dibuat duplikatnya.

Video berikut berisi tutorial bagaimana caranya membuat prefab dari Sprite Bola dan kemudian menghubungkannya dengan variabel BulletPrefab yang ada pada script dari Sprite Kucing.





Selanjutnya, untuk membuat duplikat dari prefab Sprite Bola (BulletPrefab) kita gunakan perintah Instantiate sebagai berikut.


Ada tiga parameter dari perintah Instantiate:
  • Parameter 1 adalah prefab yang akan diduplikat dan kemudian dimunculkan di layar. Parameter ini diisi dengan variabel BulletPrefab yang terhubung dengan Sprite Bola. Dengan demikian Sprite Bola akan diduplikat dan dimunculkan di layar.  
  • Parameter 2 adalah posisi dimana prefab akan dimunculkan. Parameter ini diisi dengan posisi dari Sprite kucing yaitu transform.position. 
  • Parameter 3 adalah rotasi dari prefab saat pertama kali muncul. Parameter ini diisi dengan Quaternion.identity yang artinya tidak ada rotasi (rotasi 0). 


Tahap 2: Menembak dan Bola Hilang

Pada tahap 1, setelah menembak bola tidak pernah hilang. Ini mengakibatkan jumlah bola di dalam game semakin lama semakin banyak dan pada akhirnya akan membuat game menjadi lambat. Berikut penampakan Bullet Clone yang semakin banyak.


Kita lihat di atas, sesudah menembak, Sprite Bullet Clone yaitu duplikat dari Sprite Bolla tidak pernah di hapus. Untuk menghapusnya kita cukup dengan memperbarui script dari Sprite Bola menjadi sebagai berikut.



Pada script di atas, jika posisi Y dari Sprite Bola lebih dari 5,0 (bagian atas layar) maka kita perintahkan komputer untuk menghancurkan (Destroy) sprite Bola tersebut.

Berikut adalah detail perbandingan antara script pada Scratch dan Unity yang berkaitan dengan script di atas.

Apakah Posisi Y > Posisi Tertentu?

Pada Scratch:


Pada Unity:


Hapus Duplikat Sprite Ini (Delete This Clone)

Pada Scratch:


Pada Unity:








Rabu, 22 Februari 2017

Move Sprite using Keyboard

Below is the script in Scratch for moving the Sprite to the right and to the left when the right arrow key and left arrow key are pressed.




In Unity, the same thing can be done with the following script.




Bellow is the detailed comparison between commands in Scratch and in Unity related to the above Script.

If then Command

In Scratch


In Unity

It means, if the condition between the ( and ) symbols is true then execute all commands that exist between the { and } symbols bellow the if command.

If then else Command

In Scratch


In Unity

It means if the condition between the ( and ) symbols is true then execute all commands that exist between { and } symbol bellow the if command, and if the condition is false then execute all commands that exist between { and } symbol bellow the else command.

Is Right Arrow Key Pressed?

In Scratch


In Unity


Is A Key Pressed?

In Scratch


In Unity


Selasa, 21 Februari 2017

Gerakkan Sprite dengan Keyboard

Berikut adalah script pada Scratch untuk dapat menggerakkan Sprite ke kanan dan ke kiri dengan menekan tombol panah kanan (right arrow) dan panah kiri (left arrow).




Pada Unity, hal yang sama dapat dilakukan dengan script sebagai berikut.




Secara lebih detail, berikut adalah perbandingan antara perintah Scratch dan perintah Unity yang ada hubungannya dengan Script di atas.

Perintah Jika (If then)

Pada Scratch


Pada Unity

Artinya: jika kondisi yang berada di antara simbol ( dan simbol ) benar, maka kerjakan semua perintah yang ada di antara simbol { dan simbol } di bawah perintah if.

Perintah Jika dan Kalau Tidak (If then else)

Pada Scratch


Pada Unity

Artinya: jika kondisi yang berada di antara simbol ( dan simbol ) benar, maka kerjakan semua perintah yang ada di antara simbol { dan simbol } di bawah perintah if, sedangkan jika tidak benar maka kerjakan semua perintah yang ada di antara simbol { dan simbol } di bawah perintah else.

Apakah Tombol Right Arrow di Tekan?

Pada Scratch


Pada Unity


Apakah Tombol A di Tekan?

Pada Scratch


Pada Unity






Moving Sprite

In Scratch, the script to set Sprite position at X=0 and Y=0 at the start of the program and then move the Sprite continuously to the right is as following:


The same thing can be done in Unity with the following script:


Below is a more detailed comparison between move related command in Scatch and the command in Unity.

Go To Certain Position

In Scratch:


It means go to position X=10 and Y=20.


In Unity:
It means go to position X=0.1 and Y=0.2

Note the writing of decimal number in Unity. The number 0.1 needs to be written as 0.1f and the number 0.2 needs to be written as 0.2f.

For integer number such as 0 there is no need to put f symbol afterwards.

Move Right

In Scratch


It means change the X position by 10 point.

In Unity
It means change the X position by 0.1 point.

Note that in Unity the 0.1 number is chosen instead of 10 because if the number 10 is chosen the Sprite movement will be way too fast and the Sprite will disappear from the screen very quickly.

Move Left

In Scratch


In Unity


Move Up

In Scratch


In Unity



Move Down

In Scratch


In Unity