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:

  1. Yeni bir Unity projesi oluşturun.
  2. Sahneye yeni bir 3B veya 2B nesne ekleyin (örneğin, bir Küp veya bir Sprite).
  3. 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.