Dalam Unity, Anda dapat menggunakan sudut Euler dan quaternions untuk mewakili rotasi dan orientasi. Perwakilan ini setara tetapi memiliki kegunaan dan batasan yang berbeda.
Biasanya, Anda memutar benda di sceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary Anda menggunakan Transform componentKomponen Transform menentukan Posisi, Rotasi, dan Skala setiap objek di tempat kejadian. Setiap GameObject memiliki Transform. More info
Lihat di Glossary, yang menampilkan orientasi sebagai sudut Euler. Namun, rotasi dan orientasi toko Unity secara internal sebagai quaternions, yang dapat berguna untuk gerakan yang lebih kompleks yang mungkin menyebabkan kunci gimbal.
Dalam Transform koordinat, Unity menampilkan rotasi dengan properti vektor X, Y, dan Z. Tidak seperti vektor normal, nilai-nilai ini sebenarnya mewakili sudut (dalam derajat) rotasi tentang X, Y, dan Z.
Rotasi sudut Euler melakukan tiga rotasi terpisah di sekitar tiga sumbu. Unity melakukan rotasi Euler akibatnya sekitar sumbu z, sumbu x dan kemudian sumbu y. Metode rotasi ini adalah rotasi extrinsik; sistem koordinat asli tidak berubah sementara rotasi terjadi.
Untuk memutar GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary, Anda dapat memasukkan nilai sudut seberapa jauh Anda ingin setiap sumbu untuk memutar ke komponen Transform. Untuk memutar GameObjects Anda dengan skrip, gunakan Transform.eulerAngles
. Jika Anda mengonversi ke sudut Euler untuk melakukan perhitungan dan rotasi, Anda masalah risiko dengan kunci gimbal.
Ketika objek di ruang 3D kehilangan tingkat kebebasan dan hanya dapat berputar dalam dua dimensi, itu disebut kunci gimbal. Kunci Gimbal dapat terjadi dengan sudut Euler jika dua sumbu menjadi paralel. Jika Anda tidak mengubah nilai rotasi ke sudut Euler di skrip Anda, penggunaan quaternions harus mencegah kunci gimbal.
Jika Anda memiliki masalah dengan kunci gimbal, Anda dapat menghindari sudut Euler jika Anda menggunakan Transform.RotateAround
untuk rotasi. Anda juga dapat menggunakan Quaternion.AngleAxis
pada setiap sumbu dan multiply mereka bersama-sama (multiplikasi yang memadai berlaku setiap rotasi pada gilirannya).
Quaternions menyediakan notasi matematika untuk representasi unik orientasi spasial dan rotasi di ruang 3D. Sebuah quaternion menggunakan empat angka untuk mengkodekan arah dan sudut rotasi di sekitar unit sumbu dalam 3D. Empat nilai ini adalah angka yang kompleks daripada sudut atau derajat. Anda dapat melihat ke matematika quaternions untuk informasi lebih lanjut.
Unity mengubah nilai rotasi untuk quaternions untuk menyimpannya karena rotasi quaternion efisien dan stabil untuk menghitung. Editor tidak menampilkan rotasi sebagai quaternions karena quaternion tunggal tidak dapat mewakili rotasi lebih dari 360 derajat tentang setiap sumbu.
Anda dapat menggunakan quaternions langsung jika Anda menggunakan kelas Quaternion. Jika Anda menggunakan skrip untuk rotasi Anda, Anda dapat menggunakan kelas Quaternion dan fungsi untuk membuat dan mengubah nilai rotasi. Anda dapat menerapkan nilai untuk rotasi Anda sebagai sudut Euler tetapi Anda perlu menyimpannya sebagai quaternions untuk menghindari masalah.
Untuk mengkonversi antara quaternions dan sudut Euler untuk melihat dan mengedit rotasi Anda dengan cara yang disukai, Anda dapat menggunakan skrip: