Important Classes - Quaternion
Unity, GameObject'ların üç boyutlu yönelimlerini depolamak ve bir yönelimden diğerine göreli dönüşü tanımlamak için Quaternion sınıfını kullanır.
Bu sayfa, Quaternion sınıfının genel bir bakışını ve onunla komut dosyası yazarken yaygın kullanım alanlarını sunar. Quaternion sınıfının her üyesi için kapsamlı bir referans için Quaternion komut dosyası referansına bakın.
Euler açıları (Bir GameObject'in dönüşü için denetleyicide gördüğünüz X, Y ve Z değerleri) ile Unity'nin GameObject'lerin gerçek dönüşünü depolamak için kullandığı temel Quaternion değeri arasındaki farkı anlamak önemlidir. Bu konunun temelleri için Unity'de Dönüş ve Yönelim'i okuyun.
Komut dosyalarınızda dönüşleri ele alırken, Quaternion sınıfını ve fonksiyonlarını kullanarak dönüş değerleri oluşturmalı ve değiştirmelisiniz. Euler açılarını kullanmanın geçerli olduğu bazı durumlar vardır, ancak şunları aklınızda bulundurmalısınız: Euler açılarıyla ilgilenen Quaternion Sınıfı fonksiyonlarını kullanmalısınız - Bir dönüşten Euler değerlerini almak, değiştirmek ve yeniden uygulamak istenmeyen yan etkilere neden olabilir. (aşağıya bakınız)
Quaternions'u doğrudan oluşturma ve manipüle etme
Unity'nin Quaternion sınıfı, Euler açılarını hiç kullanmadan dönüşler oluşturmanıza ve manipüle etmenize olanak tanıyan bir dizi fonksiyon içerir ve bunlar, çoğu tipik durumda kullanmanız gerekenlerdir. Her biri, Komut Dosyası Referansına kod örnekleriyle bağlantılıdır:
Dönüşler Oluşturma:
Dönüşleri Manipüle Etme:
Transform sınıfı ayrıca Quaternion dönüşleriyle çalışmanıza olanak tanıyan metodlar sağlar:
Euler açılarıyla çalışma
Bazı durumlarda, komut dosyalarınızda Euler açılarını kullanmak daha arzu edilir. Bunu yaparken, açıları değişkenlerde tutmanız ve yalnızca Euler açıları olarak uygulamanız gerektiğini, ancak yine de bir Quaternion olarak depolanması gerektiğini unutmamak önemlidir. Bir quaterniondan Euler açıları almak mümkün olsa da, alır, değiştirir ve yeniden uygularsanız, sorunlar ortaya çıkabilir.
Bu sorunların tam olarak nasıl ortaya çıkabileceği hakkında daha fazla detayı eulerAngles komut dosyası referans sayfasında okuyabilirsiniz.
İşte, bir GameObject'i X ekseni etrafında saniyede 10 derece döndürmeye çalışırken yaygın olarak yapılan hatalardan bazıları. Bunlardan kaçınmalısınız:
// dönüş komut dosyası hatası #1 // buradaki hata, bir quaterniondan x değerini değiştirmemizdir // bu değer bir açıyı temsil etmez ve istenen sonuçları üretmez void Update () { var rot = transform.rotation; rot.x += Time.deltaTime * 10; transform.rotation = rot; }
// dönüş komut dosyası hatası #2
// Bir Quaterniondan Euler değerlerini okuyun, değiştirin ve ardından yazın. // Bu değerler bir Quaterniondan hesaplandığı için, // her yeni dönüş çok farklı Euler açıları döndürebilir ve bu da gimbal kilidine // neden olabilir. void Update () { var angles = transform.rotation.eulerAngles; angles.x += Time.deltaTime * 10; transform.rotation = Quaternion.Euler(angles); }
Ve işte komut dosyası Euler açılarını doğru kullanmanın bir örneği:
// Euler açılarıyla doğru dönüş komut dosyası.
// Euler açısını bir sınıf değişkeninde saklayın ve yalnızca // onu bir Euler açısı olarak uygulamak için kullanın, ancak Euler'i geri // okumaya asla güvenmeyin. float x; void Update () { x += Time.deltaTime * 10; transform.rotation = Quaternion.Euler(x,0,0); }
Daha fazla bilgi için Quaternion komut dosyası referans sayfasına bakın.
Bu blog Unity Docs'un Türkçeye çevrilmiş halidir.
Yorumlar
Yorum Gönder