Unity'de Camera.WorldToScreenPoint() Metodu ile Ekran Koordinatlarına Dönüştürme
Unity oyun motorunda 3 boyutlu (3D) dünyadaki nesnelerin konumlarını 2 boyutlu (2D) ekran üzerinde göstermek veya kullanıcının etkileşimini yönetmek çoğu zaman gereklidir. Bu noktada Camera.WorldToScreenPoint() metodu devreye girer. Bu metod, 3D dünya uzayındaki bir noktanın koordinatlarını, kameranın perspektifinden bakıldığında 2D ekran koordinatlarına dönüştürmenizi sağlar.
Camera.WorldToScreenPoint() Metodunun Anlamı
Camera.WorldToScreenPoint() metodu, verilen bir 3D dünya noktasını alır ve bu noktanın kameranın ekran düzlemine izdüşümünü hesaplar. Sonuç, ekranın sol alt köşesinden itibaren piksel cinsinden bir vektör olarak döndürülür. X ve Y değerleri ekran üzerindeki yatay ve dikey konumu, Z değeri ise ekranın derinliğini (0 ile 1 arasında) temsil eder. Z değeri 0 ise nokta kameranın arkasında, 1 ise kameranın önündedir. Z değerinin genellikle UI etkileşimlerinde kullanıldığını belirtmek önemlidir.Metot Parametreleri ve Dönüş Değeri
Metot tek bir parametre alır:
worldPoint: Vector3: 3D dünya uzayında dönüştürülecek noktanın koordinatları.
Metot, aşağıdaki değerleri döndürür:
Vector3: Ekran koordinatları (x, y, z) piksel cinsinden. x ve y, ekran üzerindeki konumu, z ise ekran derinliğini gösterir.
Camera.WorldToScreenPoint() Kullanımı: Adım Adım Örnek
Şimdi,
Camera.WorldToScreenPoint() metodunu kullanarak basit bir örnek oluşturalım. Bu örnekte, sahneye yerleştirdiğimiz bir kürenin dünya koordinatlarını ekran koordinatlarına dönüştüreceğiz ve bu koordinatları kullanarak ekranda bir UI elementi göstereceğiz.1. Adım: Sahne Hazırlığı
Yeni bir Unity projesi oluşturun. Sahneye bir küre (Sphere) ve bir Main Camera ekleyin. Kürenin konumunu istediğiniz gibi ayarlayabilirsiniz.
2. Adım: Script Oluşturma
Yeni bir C# script oluşturun (örneğin,
ScreenPointConverter.cs) ve aşağıdaki kodu ekleyin:
using UnityEngine;public class ScreenPointConverter : MonoBehaviour
{
public Transform sphereTransform; // Kürenin Transform'u
public RectTransform uiElement; // Ekranda gösterilecek UI elementi
void Update()
{
Vector3 worldPoint = sphereTransform.position;
Vector3 screenPoint = Camera.main.WorldToScreenPoint(worldPoint);
// Ekran koordinatlarını UI elementinin konumuna ata
uiElement.anchoredPosition = screenPoint;
}
}
3. Adım: Script'i Ataması
Oluşturduğunuz scripti küreye (veya boş bir GameObject'e) ekleyin.
sphereTransform değişkenine kürenin Transform'unu, uiElement değişkenine ise ekranda göstereceğiniz UI elementinin RectTransform'unu atayın. UI elementi olarak bir Canvas ve Canvas altında bir Image kullanabilirsiniz.4. Adım: Çalıştırma ve Sonuç
Projenizi çalıştırdığınızda, UI elementi kürenin ekran üzerindeki konumunu takip edecektir. Küre sahnede hareket ettiğinde, UI elementi de buna göre hareket edecektir. Bu,
Camera.WorldToScreenPoint() metodunun nasıl kullanılacağının basit bir örneğidir.Ek Bilgiler ve İpuçları
Ekran Çözünürlüğü:
WorldToScreenPoint() metodu tarafından döndürülen koordinatlar, ekranın çözünürlüğüne bağlıdır. Farklı ekran çözünürlüklerinde farklı sonuçlar elde edebilirsiniz. Bu nedenle, UI elementlerinin boyutlandırılması ve konumlandırılması için ek hesaplamalar yapmanız gerekebilir.Ortogonal Kameralar: Ortogonal kameralarda, WorldToScreenPoint() metodu farklı bir şekilde çalışır. Perspektif kameralardaki gibi perspektif etkisi olmaz.
Camera.ScreenToWorldPoint(): Bu metodun tam tersi olan Camera.ScreenToWorldPoint() metodu, ekran koordinatlarını 3D dünya koordinatlarına dönüştürmek için kullanılır.
Bu makale, Unity'de Camera.WorldToScreenPoint() metodunu anlamanıza ve kullanmanıza yardımcı olmayı amaçlamaktadır. Daha karmaşık senaryolarda, bu metodun kullanımını daha iyi anlamak için ek araştırma ve deneyim kazanmanız gerekebilir.
🧠 Ders Sonu Değerlendirme Testi
Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.
Yorumlar (0)
İlk yorumu siz yapın!