Penggunaan Translate dan Raycast Pada Unity

Fungsi Translate() dan Raycast() Pada Unity 3D
Contoh Penggunaan Translate dan Raycast
Translate dan Raycast

Pada postingan ini saya akan menyampaikan materi penggunaan Translate dan Raycast pada Unity, materi ini saya pelajari pada mata kuliah Pemrograman Permainan yang diajarkan Pak Dolly Virgian Shaka Yudha Sakti di Universitas Budi Luhur.

Baiklah kita mulai ke pembahasan.
Kali ini saya akan membuat GameObject yang dikendalikan menggunakan keyboard dan mouse dan menggunakan fungsi Translate() dan  Raycast() untuk program permainan.
-Translate adalah sebuah fungsi untuk membuat sebuah objek bergerak secara relatif terhadap posisinya sendiri dan bukan pada posisi dunia. Contohnya jika tombol panah maju ditekan maka objek akan mau ke depannya dan bukan ke arah depan pandangan pengguna.
-Fungsi Raycast() merupakan fungsi untuk melakukan penembakan ke arah yang dituju oleh kursor mouse dan menghasilkan koordinat Vector 3D.
  • TRANSLATEBuatlah project baru di Unity atau cukup Scene baru saja (jika Anda masih ingin menggunakan project materi sebelumnya). Pastikan Project yang digunakan adalah Game 3D.
    Buat GameObject plane untuk Ground dengan cara klik menu GameObject -> 3D Object-> Plane.
    Tambahkan sebuah GameObject cube dengan cara klik menu GameObject -> 3D Object -> Cube dan tambahkan sebuah Component Rigidbody pada Object Cube melalui menu Component -> Physics -> Rigidbody.




    Kemudian atur posisi Cube agar berada tepat di atas Plane seperti berikut dengan menggunakan gizmo atau panel Transform. Sampai langkah ini Anda sudah memiliki sebuah Cube yang memiliki massa dan dipengaruhi oleh gaya gravitasi.



    Tambahkan sebuah asset gambar apapun dengan cara klik kanan pada panel Assets lalu pilih Import New Assets… Pasang texture tersebut pada Cube. Gambar ini hanya untuk membuat cube lebih menarik saja.



    Membuat Script
    Berikutnya buat script dan beri nama TranslateScript.cs lalu ubah menjadi seperti di bawah ini

    Lalu jalankan script dan cube akan bisa digerakkan maju ke depan dari cube tersebut dengan menggunakan tombo arah atas pada keyboard.
    Hentikan Games lalu modifikasi script, tambahkan script berikut ini ke method update .

    Tambahkan method isGrounded() seperti ini dibawah dan diluar fungsi update:

    Lalu gunakan method tersebut pada metode Update() dengan script ini, taruh pada bagian bawah metode Update :


    Jika tidak ada kesalahan (debug) seharusnya game sudah bisa menggerakkan Cube menggunakan keyboard dan meloncat jika menekan tombol spasi.



    Ada game yang kameranya mengikuti objek kemanapun perginya. Ada banyak cara untuk membuat seperti ini, salah satu cara yang paling mudah adalah dengan menjadikan MainCamera sebagai child dari GameObject Cube. Caranya drag saja langsung GameObject MainCamera di tab Hierarchy ke GameObject Cube. Atur posisi MainCamera sesuai yang diinginkan, misalnya di depan atau di belakang, bahkan di atas cube.



    Jalankan lagi game, dan kini hanya dengan menggunakan satu script kita bisa membuat berbagai jenis game dengan pergerakan kamera yang berbeda-beda.



  • RAYCAST
    Berikutnya Cube akan dibuat bergerak menuju suatu titik berdasarkan inputan dari mouse. 
    Atur posis MainCamera seperti semula sehingga tidak lagi menjadi child dari cube dan dapat melihat keseluruhan Plane Cube dari atas. 
    Tambahkan sebuah Plane lainnya, beri nama Target. Kecilkan ukuran Plane tersebut dengan menggunakan gizmo scale dan tambahkan sebuah material dan beri warna tertentu sehinga plane target dapat terlihat kontras dengan Plane yang berada di bawahnya.


    Membuat Script
    Buat script lalu beri nama RaycastCube.cs



    Pasang script tersebut di GameObject Cube, isikan parameter target dengan GameObject plane target yang tadi sudah dibuat. Untuk percobaan awal, biarkan parameter Is Moving tidak dicentang kemudian jalankan Game.


    Klik kanan pada sembarang tempat di plane pertama, perhatikan plane yang dipasang material akan berpindah pada posisi tepat di posisi mouse dan Cube berputar sesuai dengan arah Plane tersebut.

    Hal lain yang menarik dari proses ini adalah ketika berpindah dari tab Game ke tab Scene saat Game masih berjalan. Anda dapat melihat sebuah garis lurus berwarna biru yang ditembakkan langsung dari GameObject Main Camera menuju titik pusat plane kecil (target). Kira-kira seperti itulah bentuk ‘nyata’ dari fungsi RayCast yang merupakan salah satu fungsi utama yang sering digunakan untuk menciptakan interaksi antara user dengan lingkungan game.
    Kursor mouse TIDAK PERNAH TAHU benda apa yang diklik dalam game. Satu-satunya yang bisa dilakukannya hanya mengirimkan posisi koordinat yang diklik. RayCast merupakan fungsi untuk melakukan penembakan ke arah yang dituju oleh kursor mouse dan menghasilkan koordinat Vector3D (dalam hal ini Plane). Pada posisi perpotongan antara garis merah dan plane putih itulah, objek target berpindah.

    Langkah selanjutnya adalah, matikan kembali game, lalu centang parameter Is Moving, dan jalankan kembali game. Kini selain hanya melihat ke arah posisi titik yang diklik oleh mouse, Cube juga akan bergerak menuju PlaneTarget.




    Modifikasi Game
    Selanjutnya coba untuk modifikasi game tersebut dengan menggabungkan kedua materi ke dalam satu buah game.
    Untuk menggunakan input mouse dan keyboard sekaligus kita bisa membuat rintangan untuk Cube tersebut. Pertama input mouse akan digunakan untuk memindahkan plane target, selanjutnya input keyboard digunakan untuk menghindari rintangan yang dilewati Cube yang sedang menuju ke plane target dengan berbelok atau melompat.


    Bentuk Rintangan yang diinginkan:



    Setelah Game dijalankan:

Sekian Pembahasan mengenai Translate dan Raycast dari saya, semoga cukup jelas dan bermanfaat. Terimakasih sudah berkenan membaca.
Kunjungi kampus saya Universitas Budi Luhur.

Comments

Popular Posts