Unity'de Handles.DrawWireCube() ile 3D Küpler Çizme
Unity oyun motorunda sahne üzerinde nesnelerin manipülasyonu ve görselleştirmesi için güçlü araçlar bulunur. Bu araçlardan biri de Handles sınıfıdır. Bu yazıda, Handles.DrawWireCube() fonksiyonunu kullanarak 3 boyutlu tel kafes küpler nasıl çizileceğini detaylı bir şekilde ele alacağız. Bu fonksiyon, özellikle sahne düzenleme araçları, özel editörler ve görsel debuglama için oldukça kullanışlıdır.
Handles.DrawWireCube() Fonksiyonu
Handles.DrawWireCube() fonksiyonu, belirtilen konum ve boyutta bir tel kafes küpe (wireframe cube) çizer. Bu fonksiyon, Unity'nin sahne görünümünde geçici olarak çizim yapar ve oyunun çalıştığı sırada görünmez. Genellikle sahne düzenleme araçları veya özel editörlerde kullanılır.Parametreler
position: Küpün merkez noktasının dünya uzayındaki konumunu belirtir (Vector3).size: Küpün boyutlarını belirtir (Vector3). x, y ve z değerleri sırasıyla küpün genişlik, yükseklik ve derinliğini temsil eder.
Örnek Kullanım
Aşağıdaki kod örneği, sahnenin merkezinde 2x2x2 birim boyutunda bir tel kafes küp çizer:
using UnityEngine;public class DrawWireCubeExample : MonoBehaviour
{
void OnDrawGizmos()
{
Handles.DrawWireCube(Vector3.zero, new Vector3(2, 2, 2));
}
}
Bu kod,
OnDrawGizmos() fonksiyonu içinde yer almalıdır. OnDrawGizmos(), Unity'nin sahne görünümünde çizimler yapmamızı sağlayan bir fonksiyondur. Vector3.zero, küpün merkez noktasının orijin (0,0,0) noktasında olmasını sağlar.Daha Gelişmiş Kullanımlar
Handles.DrawWireCube() fonksiyonunu daha da gelişmiş şekillerde kullanabiliriz. Örneğin, küpün dönüşünü, rengini ve kalınlığını değiştirebiliriz:Dönüş
Küpün dönüşünü,
Handles.matrix özelliğini kullanarak değiştirebiliriz. Aşağıdaki örnek, küpü x ekseni etrafında 45 derece döndürür:using UnityEngine;public class DrawWireCubeExample : MonoBehaviour
{
void OnDrawGizmos()
{
Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(45, 0, 0), Vector3.one);
Handles.matrix = matrix;
Handles.DrawWireCube(Vector3.zero, new Vector3(2, 2, 2));
Handles.matrix = Matrix4x4.identity; // Matrisi sıfırla
}
}
Renk
Küpün rengini,
Handles.color özelliğini kullanarak değiştirebiliriz:using UnityEngine;public class DrawWireCubeExample : MonoBehaviour
{
void OnDrawGizmos()
{
Handles.color = Color.red;
Handles.DrawWireCube(Vector3.zero, new Vector3(2, 2, 2));
}
}
Kalınlık
Ne yazık ki,
Handles.DrawWireCube() fonksiyonunun doğrudan kalınlık parametresi yoktur. Kalınlığı değiştirmek için farklı yöntemler kullanmanız gerekebilir (örneğin, daha kalın çizgiler kullanarak kendi çizim fonksiyonunuzu oluşturmak).Kullanım Alanları
Handles.DrawWireCube() fonksiyonunun birçok kullanım alanı vardır:- Sahne Düzenleme Araçları: Nesnelerin boyutlarını ve konumlarını görsel olarak ayarlamak için.
- Özel Editörler: Özel verileri görselleştirmek için.
- Debuglama: Oyunun içindeki nesnelerin sınır kutularını (bounding boxes) göstermek için.
- Görsel İpuçları: Kullanıcıya oyun içi mekanikleri veya etkileşimleri göstermek için.
Bu fonksiyon, Unity'de güçlü bir araçtır ve çeşitli amaçlar için kullanılabilir. Ancak, performans açısından, gereksiz yere çok sayıda
Handles çizimi yapmaktan kaçınmalısınız.
🧠 Ders Sonu Değerlendirme Testi
Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.
Yorumlar (0)
İlk yorumu siz yapın!