MEMULAI DEMO 3D DENGAN CODING DAN MENAMBAHKAN FISIKA
3.4 COLLIDER DAN SUDUT PANDANG PLAYER
Untuk proyek ini, bentuk primitif sederhana akan digunakan untuk mewakili player. Di menu GameObject (ingat, arahkan kursor ke Objek 3D untuk memperluas menu) klik Kapsul.
Unity menciptakan bentuk silinder dengan ujung membulat; bentuk primitif ini akan mewakili player. Posisikan objek ini pada 1,1 pada sumbu Y (setengah tinggi objek, ditambah sedikit untuk menghindari tumpang tindih lantai). Anda dapat memindahkan objek pada X dan Z di mana pun Anda suka, selama berada di dalam ruangan dan tidak menyentuh dinding. Beri nama objek Player.
Di Inspector Anda akan melihat bahwa objek ini memiliki penumbuk kapsul yang ditugaskan padanya. Itu adalah pilihan default yang logis untuk objek kapsul, sama seperti objek kubus yang memiliki penumbuk kotak secara default. Tetapi objek khusus ini akan menjadi player dan karenanya membutuhkan jenis komponen yang sedikit berbeda dari kebanyakan objek. Lepaskan penumbuk kapsul dengan mengklik ikon roda gigi di kanan atas komponen tersebut, yang ditunjukkan pada gambar 2.10; yang akan menampilkan menu yang menyertakan opsi Hapus Komponen. Collider adalah mesh hijau yang mengelilingi objek, jadi Anda akan melihat mesh hijau menghilang setelah menghapus penumbuk kapsul.
Gambar 3.Menghapus komponen di Inspector
Alih-alih penumbuk kapsul, kita akan menetapkan controller karakter ke objek ini. Di bagian bawah Inspector ada tombol berlabel Tambah Komponen; klik tombol itu untuk membuka menu komponen yang dapat Anda tambahkan. Di bagian Fisika menu ini Anda akan menemukan Controller Karakter; pilih opsi itu. Sesuai dengan namanya, komponen ini akan memungkinkan objek berperilaku seperti karakter.
Anda harus menyelesaikan satu langkah terakhir untuk menyiapkan objek pemutar:
memasang kamera. Seperti disebutkan di bagian sebelumnya tentang lantai dan dinding, objek dapat didrag satu sama lain dalam tampilan Hierarki. Drag objek kamera ke kapsul pemutar untuk memasang kamera ke pemutar. Sekarang posisikan kamera sehingga terlihat seperti mata player (saya sarankan posisi 0, 0,5, 0). Jika perlu, setel ulang rotasi kamera ke 0, 0, 0 (ini akan mati jika Anda memutar kapsul). Anda telah membuat semua objek yang diperlukan untuk scene ini. Yang tersisa adalah menulis kode untuk memindahkan objek player.
Membuat sesuatu bergerak: skrip yang menerapkan transformasi
Agar player berjalan di sekitar scene, Anda akan menulis skrip gerakan yang dilampirkan ke pemutar. Ingat, komponen adalah bit fungsionalitas modular yang Anda tambahkan ke objek, dan skrip adalah sejenis komponen. Akhirnya skrip tersebut akan merespons input keyboard dan mouse, tetapi pertama-tama buat pemutar berputar di tempatnya. Awal ini akan mengajarkan Anda bagaimana menerapkan transformasi dalam kode. Ingat bahwa tiga transformasi adalah Translate, Putar, dan Scalekan; memutar objek berarti mengubah rotasi. Tetapi ada lebih banyak yang perlu diketahui tentang tugas ini daripada hanya "ini melibatkan rotasi."
Membuat diagram bagaimana gerakan diprogram
Menganimasikan suatu objek (seperti membuatnya berputar) bermuara pada memindahkannya dalam jumlah kecil setiap frame, dengan frame yang diputar berulang -ulang.
Dengan sendirinya, transformasi berlaku secara instan, sebagai lawan dari pergerakan yang terlihat dari waktu ke waktu. Tetapi menerapkan transformasi berulang kali menyebabkan objek terlihat bergerak, seperti serangkaian gambar diam di flipbook. Gambar 2.11 diagram cara kerjanya.
Gambar 3.11 Munculnya gerakan: proses siklus transformasi antara gambar diam Ingat bahwa komponen skrip memiliki metode Update() yang menjalankan setiap frame. Untuk memutar kubus, tambahkan kode di dalam Update() yang memutar kubus sedikit. Kode ini akan berjalan berulang-ulang setiap frame. Kedengarannya cukup sederhana, bukan?
Menulis kode untuk mengimplementasikan diagram
Sekarang mari kita terapkan konsep yang baru saja dibahas. Buat skrip C# baru (ingat ada di submenu Buat di menu Aset), beri nama Spin, dan tulis kode dari daftar berikut (jangan lupa untuk menyimpan file setelah mengetik di dalamnya!).
Gambar 3.12 Membuat benda berputar
Untuk menambahkan komponen skrip ke objek pemutar, drag skrip ke atas dari tampilan Proyek dan letakkan di Pemutar dalam tampilan Hierarki. Sekarang tekan Mainkan dan Anda akan melihat tampilan berputar; Anda telah menulis kode untuk membuat objek bergerak! Kode ini adalah template default untuk skrip baru ditambah dua baris baru yang ditambahkan, jadi mari kita periksa apa yang dilakukan kedua baris tersebut.
Pertama ada variabel untuk kecepatan yang ditambahkan ke bagian atas definisi kelas.
Ada dua alasan untuk mendefinisikan kecepatan rotasi sebagai variabel: satu adalah aturan pemrograman standar "tidak ada angka ajaib", dan alasan kedua khusus untuk bagaimana Unity menampilkan variabel publik. Unity melakukan sesuatu yang berguna dengan variabel publik dalam komponen skrip, seperti yang dijelaskan dalam tip berikut.
Tip, Variabel publik diekspos di Inspector sehingga Anda dapat menyesuaikan nilai komponen setelah menambahkan komponen ke objek game. Ini disebut sebagai "serialisasi"
nilai, karena Unity menyimpan status variabel yang dimodifikasi.
Gambar dibawah ini menunjukkan seperti apa komponen skrip di Inspector. Anda dapat mengetikkan nomor baru, lalu skrip akan menggunakan nilai itu alih-alih nilai default yang ditentukan dalam kode. Ini adalah cara praktis untuk menyesuaikan pengaturan komponen pada objek yang berbeda, bekerja di dalam editor visual alih-alih melakukan hardcoding setiap nilai.
Gambar 3.13 Inspector menampilkan variabel publik yang dideklarasikan dalam skrip Baris kedua yang diperiksa dari daftar 2.1 adalah metode Rotate(). Itu ada di dalam Update() sehingga perintah menjalankan setiap frame. Rotate() adalah metode dari kelas Transform, jadi ini disebut dengan notasi titik melalui komponen transformasi objek ini (seperti dalam kebanyakan bahasa berorientasi objek, this.transform tersirat jika Anda mengetikkan transformasi). Transformasi diputar dengan derajat kecepatan setiap frame, menghasilkan gerakan berputar yang mulus. Tetapi mengapa parameter untuk Rotate() terdaftar sebagai (0, speed, 0) sebagai lawan, katakanlah, (speed, 0, 0)?
Ingatlah bahwa ada tiga sumbu dalam ruang 3D, berlabel X, Y, dan Z. Cukup intuitif untuk memahami bagaimana sumbu ini berhubungan dengan posisi dan gerakan, tetapi sumbu ini juga dapat digunakan untuk menggambarkan rotasi. Aeronautika menjelaskan rotasi dengan cara yang sama, sehingga programmer yang bekerja dengan grafik 3D sering menggunakan serangkaian istilah yang dipinjam dari aeronautika: pitch, yaw, dan roll. Gambar 2.13 mengilustrasikan apa arti istilah-istilah ini; pitch adalah rotasi di sekitar sumbu X, yaw adalah rotasi di sekitar sumbu Y, dan roll adalah rotasi di sekitar sumbu Z.
Gambar 3.14 Ilustrasi rotasi pitch, yaw, dan roll pesawat terbang
Mengingat bahwa kita dapat menggambarkan rotasi di sekitar sumbu X-, Y-, dan Z, itu berarti tiga parameter untuk Rotate() adalah rotasi X, Y, dan Z. Karena kami hanya ingin player berputar ke samping, bukan miring ke atas dan ke bawah, seharusnya hanya ada angka yang diberikan untuk rotasi Y, dan hanya 0 untuk rotasi X dan Z. Semoga Anda bisa menebak apa yang akan terjadi jika Anda mengubah parameter menjadi (kecepatan, 0, 0) dan kemudian memainkannya; coba itu sekarang! Ada satu poin penting lainnya yang perlu dipahami tentang rotasi dan sumbu koordinat 3D, yang diwujudkan dalam parameter keempat opsional untuk metode Rotate().