Unity Objeleri Sürükle ve Bırak (Drag And Drop Object)

ücretsiz unity eğitim serisi

Unity 2D ile objelerin sürükle ve bırak (Drag and Drop) işlemlerinin nasıl yapılacağını MonoBehavior sınıfından OnMouseDrag ve OnMouseDown fonksiyonlarını kullanarak anlatacağım.

Sürükle ve bırak yöntemi bir çok oyunda kullanılmıştır. (bkz. Neon Target)

Sürükle Bırak Objesinin Oluşturulması

Öncelikle bir objenin sürüklenip bırakılması için bir Collider’e sahip olması gerekir. Taşıyacağımız objeye uygun olarak bir collider ekleyebilirsiniz. Boş bir GameObject oluşturup içine Sprite Renderer ve Box Collider ekleyelim. SpriteRenderer bileşeninin Sprite özelliğini UISprite olarak değiştirdim. Daha sonra bir “Drag and Drop Object” isimli bir c# script oluşturduk ve objemize dahil ettik.

Sürükle ve Bırak Scriptinin Yazılması

Şimdi DragAndDrop scriptine çift tıklayıp Visual Studioda açalım. Aşağıda OnMouseDown fonksiyonu ile mouse sol tık basıldığı sürece imlecimizin nesneyle olan uzaklığı alınıyor ve OnMouseDrag ile sürükleme işlemi gerçekleşirse mouse pozisyonuna objeyi taşıma işlemi gerçekleşiyor. OnMouseUp fonksiyonu da bize sürükle bırak işleminin bittiğini gösterir.

using System.Collections.Generic;
using UnityEngine;

public class DragAndDrop : MonoBehaviour
{
    private Vector3 offset;

    void OnMouseDown()
    {
        offset = gameObject.transform.position -
            Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y));
    }
    void OnMouseDrag()
    {
        Vector3 newPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y);
        transform.position = Camera.main.ScreenToWorldPoint(newPosition) + offset;
    }
    private void OnMouseUp()
    {
        Debug.Log("Drag and Drop is over");
    }
}