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.
Yorum Gönder