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