Unity Swipe Input Yapımı

Unity Swipe Input Yapımı

Unity Swipe Input Yapımı

 Hepinize merhaba arkadaşlar bu yazımda sizlere Unity de Swipe Input yapılımını anlatacağım, mobil oyunlarda özellikle sonsuz koşucu oyunlarında kullanılan bir yöntemdir.

using UnityEngine;

// ReSharper disable once CheckNamespace
namespace UrhobA.Inputs.Swipe
{
public class MouseMovement : MonoBehaviour
{
    private Vector2
        _startedPos, // Farenin ilk tıkladığı konumu alıyoruz
        _secondPos, // Farenin bırakıldığı konumu alıyoruz
        _currentPos; // Geçerli fare konumunu alıyoruz
    
    private Direction.Direction _returnedValue; // Döndürülecek değeri tutuyoruz
    public Direction.Direction GetValue() // Geçerli konuma erişmek için kullandığımız fonksiyon
    {
        return _returnedValue;
    }
    public void ResetValue() // Geçerli konumu sıfırlamak için kullandığımız fonksiyon
    {
        _returnedValue = Direction.Direction.None;
    }
    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
            _startedPos = Input.mousePosition; // Fareye ilk tıklanıldığı zaman konumunu alıyoruz

        if (!Input.GetMouseButtonUp(0)) return; // Fareden parmak çekme işlemi yapılmadığı sürece return döndürüyoruz.
        _secondPos = Input.mousePosition; // fareden parmak çekildiği anki konumu alıyoruz
        _currentPos = new Vector2(_secondPos.x - _startedPos.x, _secondPos.y - _startedPos.y); // gerekli hesaplamaları yapıp geçerli fare konumu olarak atıyoruz
        _currentPos.Normalize(); // Normalize ediyoruz.

		// Aşağı tarafta fare konumlarını gönderiyoruz.
        if (_currentPos.y > 0 && _currentPos.x > -0.5f && _currentPos.x < .5f)
            _returnedValue = Direction.Direction.Up;

        if (_currentPos.y < 0 && _currentPos.x > -0.5f && _currentPos.x < .5f)
            _returnedValue = Direction.Direction.Down;

        if (_currentPos.x < 0 && _currentPos.y > -0.5f && _currentPos.y < .5f)
            _returnedValue = Direction.Direction.Left;

        if (_currentPos.x > 0 && _currentPos.y > -0.5f && _currentPos.y < .5f)
            _returnedValue = Direction.Direction.Right;

    }
    
    
}
}
// ReSharper disable once CheckNamespace
namespace UrhobA.Inputs.Swipe.Direction
{
	// Yönlerimizi göndermek için kullandığımız enum değeri oluşturuyoruz
    public enum Direction
    {
        None,
        Left,
        Right,
        Up,
        Down
    }
}

Kodlarımızı şu şekilde kullanıyoruz.

MouseMovement _mouseMovement;

awake(){

    _mouseMovement = new MouseMovement(); // Burada add component ile eklerseniz daha iyi olur.

}

switch(_mouseMovement.GetValue()){

    case Direction.Left:

        // Sola kayma kodları..

        // Eğer ki sonsuza kadar devam etmesini istemiyorsak

        _mouseMovement.ResetValue();

        // Komutunu giriyoruz.

    break;

    case Direction.Right:

        // Sağa kayma kodları..

    break;

}

Yukarıda dediğim gibi projenizde kullanabilirsiniz.

Kodların GitHub sayfasına gitmek için aşağıdaki bağlantıyı kullanabilirsiniz.

UrhobA Swipe Movement -> GitHub