Unity'de Input.mousePosition ile Fare Konumunu Algılama
Merhaba Unity geliştiricileri! Bu yazıda, Unity oyun motorunda fare konumunu tespit etmek için kullanılan Input.mousePosition fonksiyonunu detaylı bir şekilde inceleyeceğiz. Bu fonksiyon, oyunlarınızda fare etkileşimli birçok mekaniği hayata geçirmenize olanak tanır. Örneğin, tıklamaya bağlı olaylar, sürükle-bırak mekanikleri ve hatta fare imlecinin konumuna göre nesneleri hareket ettirme gibi işlemler Input.mousePosition ile kolayca gerçekleştirilebilir.
Input.mousePosition Nedir?
Input.mousePosition, Unity'de fare imlecini ekran koordinatları cinsinden temsil eden bir Vector3 değeridir. Bu koordinat sistemi, ekranın sol alt köşesini (0, 0) olarak kabul eder. X değeri yatay, Y değeri dikey konumu ve Z değeri ise her zaman 0'dır.Koordinat Sistemi
Unutmamak önemlidir ki,
Input.mousePosition ekran koordinatlarını döndürür, dünya koordinatlarını değil. Bu, fare imlecini oyun dünyanızdaki bir nesneye bağlamak istediğinizde, ekran koordinatlarını dünya koordinatlarına dönüştürmeniz gerektiği anlamına gelir. Bu dönüşüm, Camera.main.ScreenToWorldPoint() fonksiyonu ile gerçekleştirilebilir.Input.mousePosition Kullanımı
Input.mousePosition'ı kullanmanın en basit yolu, her karede fare konumunu konsola yazdırmaktır. Aşağıdaki kod, bunu nasıl yapacağınızı gösterir:using UnityEngine;public class MousePositionExample : MonoBehaviour
{
void Update()
{
Debug.Log("Mouse Position: " + Input.mousePosition);
}
}
Bu kod, her karede fare konumunu Unity editörünün konsoluna yazdıracaktır. Ancak, genellikle bu bilgiyi oyun mekaniklerinizde kullanmanız gerekecektir.
Örnek: Fare Tıklamasıyla Nesne Oluşturma
Şimdi, fare tıklamasıyla bir nesne oluşturan bir örnek oluşturalım. Bu örnek,
Input.GetMouseButtonDown(0) fonksiyonunu kullanarak sol fare tıklamasını algılar ve tıklama konumuna bir küp yerleştirir.using UnityEngine;public class CreateCubeOnClick : MonoBehaviour
{
public GameObject cubePrefab;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Vector3 mousePos = Input.mousePosition;
mousePos.z = 10; // Kameranın önüne yerleştirmek için z değerini ayarla
Vector3 worldPos = Camera.main.ScreenToWorldPoint(mousePos);
Instantiate(cubePrefab, worldPos, Quaternion.identity);
}
}
}
Bu kodda, öncelikle
Input.GetMouseButtonDown(0) ile sol tıklama kontrol edilir. Eğer tıklama gerçekleşmişse, Input.mousePosition değeri alınır. mousePos.z = 10; satırı, küpün kameranın önüne yerleştirilmesini sağlar. Daha sonra, Camera.main.ScreenToWorldPoint() fonksiyonu ile ekran koordinatları dünya koordinatlarına dönüştürülür ve Instantiate() fonksiyonu ile küp bu konuma yerleştirilir.Örnek: Sürükle ve Bırak Mekaniği
Input.mousePosition'ı kullanarak sürükle ve bırak mekanikleri de oluşturabilirsiniz. Bu, oyun nesnelerini fare ile sürüklemeyi ve bırakmayı içerir. Bu işlemi gerçekleştirmek için, fare düğmesinin basılı olup olmadığını ve fare konumunun değişimini izlemek gerekir.Bu örnek biraz daha karmaşıktır ve detaylı bir şekilde ele alınması gerekir. Ancak, temel prensip, fare düğmesi basılıyken nesnenin konumunu Input.mousePosition'a göre güncellemektir. Bu güncelleme, yine Camera.main.ScreenToWorldPoint() fonksiyonu ile dünya koordinatlarına çevrilerek yapılır.
https://www.youtube.com/watch?v=0jTPKz3ga4w
Bu video, Input.mousePosition'ın kullanımını daha görsel bir şekilde anlamanıza yardımcı olacaktır.
Sonuç
Input.mousePosition, Unity'de fare etkileşimli oyun mekanikleri oluşturmak için çok güçlü bir araçtır. Bu yazıda ele aldığımız örnekler, bu fonksiyonun kullanımını anlamanıza yardımcı olacaktır. Kendi oyunlarınızda Input.mousePosition'ı kullanarak yaratıcılığınızı sergileyebilirsiniz! 🧠 Ders Sonu Değerlendirme Testi
Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.
Yorumlar (0)
İlk yorumu siz yapın!