Simple Touch Input pada Unity 3D

345Jadi pagi hari tadi sebelum berangkat matrikulasi saya mendapatkan pesan dari teman facebook yang isinya kurang lebih menanyakan bagaimana touch input pada untity untuk platform Android :

Untuk dokumentasi, maka alangkah baiknya saya coba jabarkan sedikit tentang penggunaan touch input pada unity untuk platform mobile dengan tutorial, barangkali ada teman-teman lain yang sedang kebetulan mencari referensi yang sama. Oke langsung saja kita buat scene atau project baru, pada tutorial ini saya menggunakan workspace 2D dengan sebuah sprite sederhana.

Ini tidak menjadi patokan, silahkan tambahkan objek sesuai kebutuhan Anda, yang penting nanti kita mempunyai objek yang bisa digerakan. Selanjutnya, silahkan Anda tambahkan dua buah file grafis yang akan digunakan sebagai indicator control. Perlu diingat file yang digunakan harus mandiri, artinya bukan berupa kumpulan sprite namun berupa single image (.png). Karena nanti kita akan menggerakan objek kekiri dan kekanan, pastikan image yang dipakai memiliki shape yang sesuai.

Buat sebuah game objek kosong dengan nama ‘ControlTouch’, kemudian pada game objek tersebut silahkan tambahkan 2 buah game objek baru ‘GUITexture’ berinama masing-masing game objek baru tersebut dengan nama ‘Left’ dan ‘Right’, pada komponen ‘GUITexture’ bagian texture load image sesuai kebutuhan. Atur posisi texture tadi, pada workspace switch tampilan menjadi Game untuk melihat texture (karena dalam mode Scene tidak akan terlihat). Perlu diingat, karena nantinya target build adalah untuk device Android yang mempunyai banyak resolusi, maka kita juga memerlukan besar texture touch input yang responsive. To do this, pada kompne ‘GUITexture’ kita hanya mengatur transform saja untuk skala, rotate, dan position. Jangan merubah value Pixel Inset, biarkan saja nilainya 0, sehingga nantinya texture akan fixed mengikuti resolusi layar.
Selanjutnya kita akan langsung menuju script C#, buat script baru dengan nama TouchControl.cs
Sederhana bukan ? Yang kita manfaatkan adalah method hitTest pada GUITexture ketika TouchPhase = began (disentuh) ataupun Touchphase = stationary (hold). Jika kita hanya menginginkan salah satunya saja (ketika ditahan atau disentuh), maka pada statement if ‘t.phase’ dimana t adalah Input.GetTouch (inisialisasi touch) diisi satu kondisi saja. Pada method hitTest require 2 argumen yaitu posisi t (input.GetTouch) dan kamera dimana GUITexture itu dirender. Anda juga bisa menambahkan penugasan atau perintah lain pada event TouchPhase = ended, artinya ketika touch pase selesai. Mirip MouseUp atau KeyUp pada control keyboard dan mouse. Karena kita tidak akan memberikan event apa-apa setelah event touch selesai, maka pada bagian tersebut dibiarkan kosong saja. Save script, kemudian lihat pada Inspector :

Kita mempunyai 4 variable public, yaitu Move Left dan Move Right berupa GUI Texture, Player berupa Objek player yan telah kita tambahkan pada awal tadi, dan variable Move Speed berupa float sebagai kecepatan perpindahan objek player. Silahkan wiring sesuai dengan requirementnya. Jika telah selesai, silahkan test pada device Android Anda, maka seharusnya objek bisa bergerak kekanan dan kekiri ketika kita menyentuh salah satu GUITexture.

Post a Comment