Unity'de Fare Kontrolleri
Bu eğitimde, Unity'de temel fare kontrollerinin nasıl uygulanacağını öğreneceksiniz. Fare girişi algılamayı, fare tıklamalarını yönetmeyi, fare hareketini ve fareyi kullanarak oyun nesneleriyle etkileşimi ele alacağız.
Projenin Kurulumu
Kodlamaya başlamadan önce basit bir Unity projesi kuralım:
- Yeni bir Unity projesi oluşturun.
- Sahneye yeni bir 3B veya 2B nesne ekleyin (örneğin, bir Küp veya bir Sprite).
MouseController
adında yeni bir C# betiği oluşturun ve bunu ana Kamera'ya veya herhangi boş bir Oyun Nesnesi'ne ekleyin.
Fare Girişini Algılama
Unity fare girdisini algılamak için yerleşik yöntemler sağlar. Fare düğmesi basışlarını algılamak için Input.GetMouseButtonDown
yöntemini kullanabiliriz.
using UnityEngine;
public class MouseController : MonoBehaviour
{
void Update()
{
if (Input.GetMouseButtonDown(0)) // Left mouse button
{
Debug.Log("Left mouse button pressed");
}
if (Input.GetMouseButtonDown(1)) // Right mouse button
{
Debug.Log("Right mouse button pressed");
}
}
}
Fare Tıklamalarını Yönetme
Nesneler üzerindeki fare tıklamalarını işlemek için Raycasting'i kullanmamız gerekir. Raycasting, bir fare tıklamasının sahnedeki herhangi bir oyun nesnesiyle kesişip kesişmediğini algılamamızı sağlar.
using UnityEngine;
public class MouseController : MonoBehaviour
{
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Debug.Log("Hit: " + hit.transform.name);
// Perform actions on the hit object here
}
}
}
}
Fare Hareketi
Unity'deki fare hareketini algılamak Input.GetAxis
kullanılarak yapılabilir. Yatay ve dikey yönlerde fare hareketini elde etmek için Fare X
ve Fare Y
eksenlerini kullanabiliriz.
using UnityEngine;
public class MouseController : MonoBehaviour
{
void Update()
{
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
if (mouseX != 0 || mouseY != 0)
{
Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
}
}
}
Oyun Nesneleriyle Etkileşim
Oyun nesneleriyle etkileşime girmek için betiğimizi genişletelim. Bir nesneye tıklandığında rengini değiştireceğiz.
using UnityEngine;
public class MouseController : MonoBehaviour
{
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Renderer renderer = hit.transform.GetComponent();
if (renderer != null)
{
renderer.material.color = Random.ColorHSV();
}
}
}
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
if (mouseX != 0 || mouseY != 0)
{
Debug.Log("Mouse moved. X: " + mouseX + " Y: " + mouseY);
}
}
}
Çözüm
Unity'de fare kontrollerinin temellerini ele aldık. Fare girdisini nasıl algılayacağımızı, fare tıklamalarını nasıl işleyeceğimizi, fare hareketini nasıl izleyeceğimizi ve Raycasting kullanarak oyun nesneleriyle nasıl etkileşim kuracağımızı öğrendik. Bu kavramlar, Unity projelerinizde daha karmaşık etkileşimler oluşturmak için genişletilebilir.