Unity Swerve Input Yapımı
Unity Swerve Input Yapımı
Herkese merhaba arkadaşlar bu yazımda sizlere Unity de Swerve mekaniği için nasıl bir kod yazılması gerektiğini göstereceğim.
Kodları aşağıya bırakıyorum ve içerisinde açıklama satırları ile nerede ne yaptığımızı açıklayacağım.
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace UrhobA.Inputs.Swerve
{
public class Mouse : MonoBehaviour
{
private Vector2
_startedPos, // hareketin başladığı konum
_delta; // hareketin devam ettiği konum
private Vector2 _value; // hareket sonucunda yansıtılan değer
public Vector2 GetValue() // Bu fonksiyonumuz karakter hareketini yazdığımız scriptten çağırılacak ve hareket koduna dahil edilecek.
{
return _value;
}
public float maxDistance = 100f; // kullanıcının hareketinin maksimum ne kadar olacağı
#region System Functions
private void Update()
{
if (Input.GetMouseButtonDown(0))
_startedPos = (Vector2) Input.mousePosition; // başlangıç konumunu alıyoruz
if (Input.GetMouseButtonUp(0))
{
// Değerleri sıfırlıyoruz hareket bittiği zaman
_delta = Vector2.zero;
_startedPos = Vector2.zero;
_value = Vector2.zero;
}
if (!Input.GetMouseButton(0)) return; // hareket ediyorsa hesaplamaları yapıyoruz
_delta = (Vector2) Input.mousePosition - _startedPos;
_delta.x = Mathf.Clamp(_delta.x, -maxDistance, maxDistance);
_delta.y = Mathf.Clamp(_delta.y, -maxDistance, maxDistance);
_value = _delta / maxDistance;
_startedPos = (Vector2) Input.mousePosition;
}
#endregion
}
}
Projenin kaynak kodlarına aşağıdaki GitHub bağlantısından bakabilirsiniz.


Yorum Gönder