Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity'de Camera.WorldToScreenPoint() Metodu ile Ekran Koordinatlarına Dönüştürme

Paylaşan: Unity Eğitim 16 September 2025 4 dakika okuma 102 görüntülenme

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.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!