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

Unity'de Input.mousePosition ile Fare Konumunu Kontrol Etme

Paylaşan: Unity Eğitim 22 September 2025 3 dakika okuma 137 görüntülenme

Unity oyun motorunda fare konumunu algılamak ve oyun mekaniklerinizde kullanmak için Input.mousePosition oldukça kullanışlı bir araçtır. Bu rehberde, Input.mousePosition'ın nasıl çalıştığını, farklı senaryolarda kullanımını ve olası sorunlarla başa çıkma yöntemlerini detaylı olarak ele alacağız.

Input.mousePosition Nedir?


Input.mousePosition, Unity'de fare imlecini ekranda temsil eden bir Vector3 değeridir. Bu değer, ekranın sol alt köşesini (0, 0) referans alarak, fare imlecini x ve y eksenlerindeki piksel koordinatlarını gösterir. z değeri ise her zaman 0'dır.

Koordinat Sistemi


Önemli bir nokta, Input.mousePosition'ın ekran koordinatlarını döndürmesidir, dünya koordinatlarını değil. Bu, ekranın sol alt köşesinin (0, 0) ve sağ üst köşesinin (Ekran Genişliği, Ekran Yüksekliği) olduğu anlamına gelir. Bu koordinat sistemi, oyununuzun kamera ve dünya koordinat sisteminden bağımsızdır.

Input.mousePosition Kullanımı


Input.mousePosition'ı kullanmak oldukça basittir. Herhangi bir MonoBehaviour script'inde, Input.mousePosition değişkenine erişerek fare konumunu alabilirsiniz. İşte basit bir örnek:
using UnityEngine;

public class MousePositionExample : MonoBehaviour
{
void Update()
{
Vector3 mousePos = Input.mousePosition;
Debug.Log("Fare Konumu: " + mousePos);
}
}


Bu kod, her karede fare konumunu konsola yazdıracaktır. Ancak, bu konum ekran koordinatlarıdır. Dünya koordinatlarına çevirmek için, kameranızın ScreenToWorldPoint fonksiyonunu kullanmanız gerekecektir.

Dünya Koordinatlarına Çevirme


Ekran koordinatlarını dünya koordinatlarına çevirmek için, kameranızın ScreenToWorldPoint fonksiyonunu kullanmalısınız. Bu fonksiyon, ekran koordinatlarını ve z değerini alarak, karşılık gelen dünya koordinatlarını döndürür. z değeri, kameraya olan mesafeyi belirtir. 0 değeri, kameranın yakın düzleminde bir noktayı temsil eder.
using UnityEngine;

public class MousePositionWorld : MonoBehaviour
{
public Camera mainCamera;

void Update()
{
Vector3 mousePos = Input.mousePosition;
mousePos.z = 10f; // Kamera ile fare arasında varsayılan mesafe
Vector3 worldPos = mainCamera.ScreenToWorldPoint(mousePos);
Debug.Log("Dünya Koordinatı: " + worldPos);
}
}


Bu örnekte, mousePos.z = 10f; satırı, fare imlecini kameradan 10 birim uzaklıkta varsayar. Bu değeri oyununuzun ihtiyaçlarına göre ayarlamanız gerekebilir. Örneğin, toprağa tıklama gibi bir olayda, z değerini 0'a yakın bir değere ayarlamanız daha uygun olacaktır.

Oyun Mekaniklerinde Kullanım Örnekleri


Input.mousePosition'ı çeşitli oyun mekaniklerinde kullanabilirsiniz:

  • Hedefleme Sistemleri: Fare imlecini takip eden bir silah veya karakter hedefleme sistemi oluşturabilirsiniz.

  • UI Etkileşimleri: Fare tıklamalarını algılayarak UI öğelerine etkileşim ekleyebilirsiniz.

  • Nesne Yerleştirme: Oyun dünyasına nesneleri fare tıklamasıyla yerleştirebilirsiniz.

  • Toplama Mekanikleri: Fare ile tıklanan bir nesneyi toplayabilirsiniz.


Olası Sorunlar ve Çözümler


Input.mousePosition kullanırken karşılaşabileceğiniz bazı sorunlar ve çözümleri:

  • Yanlış Koordinatlar: Kamera ayarlarınız, ekran çözünürlüğünüz veya yanlış z değeri kullanımı, yanlış dünya koordinatlarına neden olabilir. Kamera ayarlarınızı ve z değerini dikkatlice kontrol edin.

  • UI Engelleyici: UI öğeleri, fare tıklamalarını engelleyebilir. Bu sorunu çözmek için, EventSystem ve GraphicRaycaster bileşenlerini kullanarak UI etkileşimlerini yönetebilirsiniz.


Sonuç


Input.mousePosition, Unity'de fare konumunu algılamak için güçlü ve kullanışlı bir araçtır. Bu rehberde öğrendiğiniz bilgilerle, oyunlarınıza etkileşimli ve dinamik özellikler ekleyebilirsiniz. Unutmayın, ekran koordinatları ile dünya koordinatları arasında dönüşüm yapmayı doğru bir şekilde uygulamak, başarılı bir entegrasyon için oldukça önemlidir.

🧠 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!