Tutorial Unity - Logic Timer Matching - IMedia9 - Creative Networks

Breaking

Saturday 30 August 2014

Tutorial Unity - Logic Timer Matching

Halo sobat Unity! Apa kabar? Postingan ini gue buat untuk membantu menjawab pertanyaan mbak Mutia yang lagi super galau dengan skripsinya. Cek postingannya di sini Mbak yang satu ini lagi coba bikin proyek TA menggunakan Kinect. Well, berhubung gue nggak pernah pake "mainan" itu jadi nggak bisa banyak ngebantu juga sih.


Tapi ada satu hal yang bikin gue rada penasarn soal game Guitar-Hero like. Lagi-lagi gue nggak tahu Guitar Hero itu apaan. Kalo Heroes Might and Magic sih tahu, hehehe. Setelah gue cek dan ricek, intinya sih mungkin game itu berusaha untuk ngajarin player bermain musik. Jadi ada nada, pencet sesuatu, kalo bener nadanya dapat skor kalo nggak ya salah. Pemahaman gue sih gitu.

Nah, jadi sekarang gue bakalan coba bikin logic-scipt sederhana untuk membuktikan teori gue itu. Ini bukan game loh ya, ini adalah bentuk logika dari game yang fungsinya ngecek antara inputan user dengan "sesuatu" yang harus di sesuaikan. Dalam hal ini: Nada. Oke, langkah pertama adalah agan buat sebuah New Project Unity. Habis itu buat sebuah C# script dan beri nama: CekInputUser.

Terus ketik deh kode program berikut:
1:  using UnityEngine;  
2:  using System.Collections;  
3:  public class CekInputUser : MonoBehaviour {  
4:       int myTimer;  
5:       int myScore = 0;  
6:       string[] Song = {"-","do","-","re","-","do","-","mi","-","do"};   
7:       // Use this for initialization  
8:       void Start () {  
9:       }  
10:       // Update is called once per frame  
11:       void Update () {  
12:       }  
13:       void FixedUpdate () {  
14:            if (myTimer < 10){  
15:                 myTimer = (int) Mathf.Round(Time.time);  
16:            }  
17:            Debug.Log(myTimer.ToString());  
18:       }  
19:       void OnGUI () {  
20:            GUI.Label(new Rect(0,0,100,100), "Waktu: "+myTimer.ToString());  
21:            GUI.Label(new Rect(0,20,200,100), "Yang mesti dipencet: "+Song[myTimer]);  
22:            GUI.Label(new Rect(0,40,200,100), "Nilai: "+myScore);  
23:            if (GUI.Button(new Rect(50, 100, 100, 100), "DO")){  
24:                 if (Song[myTimer] == "do"){  
25:                      myScore++;  
26:                 } else {  
27:                      myScore--;  
28:                 }  
29:            }  
30:            if (GUI.Button(new Rect(150, 100, 100, 100), "RE")){  
31:                 if (Song[myTimer] == "re"){  
32:                      myScore++;  
33:                 } else {  
34:                      myScore--;  
35:                 }  
36:            }  
37:            if (GUI.Button(new Rect(250, 100, 100, 100), "MI")){  
38:                 if (Song[myTimer] == "mi"){  
39:                      myScore++;  
40:                 } else {  
41:                      myScore--;  
42:                 }  
43:            }  
44:       }  
45:  }  

Pasang scriptnya di Main Camera lalu Play. Thats it! Script ini simpel banget loh. Tapi buat agan-agan yang nggak ngerti, sini gue kasih tahu. Idenya adalah agan punya total waktu 10 detik (yang sekaligus merupakan durasi musiknya sendiri, misalnya). Di detik2 tertentu (yang ada di dalam array Song) ada nada yang harus agan klik, dalam hal ini mecingnya tulisan dengan tombol. Untuk indeksnya sendiri cukup "numpang" dengan detiknya (biar ga pusing nentuin detik berapa mesti mencet nada apa dan sebagainya - jadi gue bikin jumlah detik lagu adalah jumlah array sendiri).

Untuk masalah skoringnya gampang banget. Kalo bener dapat +1, kalo gagal -1.  Udah gitu doang. Jadi kalao dilihat dari logika ini (entah itu mau bikin kayak guitar-hero atau apa pun), MUSIK ITU SAMA SEKALI NGGAK NGARUH! Yang berpengaruh ada "something behind" proses. Karena yang dicek bukan nadanya, tapi indeks atau variabel yang ada di belakangnya. Konsep ini merupakan konsep yang sangat umum di gunakan di dalam game mana pun. Untuk sisanya, kembangin sendiri aja ya? Ngerti kan? *Ga ngerti pak doseeeeeeen*

1 comment:

  1. Makasih pak dosen, postingannya mantap.
    jadi dapet inspirasi buat bikin mini game :D

    ReplyDelete