Ekranda sağa doğru harekette sağa sola doğru harakette sola gidicek şekilde benim yazdığım bi kod var bakabilirsin.
public Vector3 karakterPoz;
//karakterimizin GameObject ve unitydeki adi karakterimizin o anki pozisyonunu her update'de almamız gerekir.
karakterPoz = GameObject.Find("karakterimiz").transform.position;
private Vector2 startPos;
private Vector2 fingerStart;
private Vector2 fingerEnd;
//Karakterimiz Transform olarak tanımlı
public Transform karakter;
//time global olarak 0.0f olarak tanımla.Her updatedeşu işlem yapılması gerekiyor.
time -= Time.deltaTime;
foreach (Touch touch in Input.touches)
{
//Hassaslık Oranı şuan çok düşük ama artırabilirsin.
if (time < 0.75f)
{
//Parmak Hareketi Başladıysa(Örn : Sağ'a doğru) , Parmak Hareketimiz sonucu parmağımız başlangıç ve bitiş noktalarını kaydediyoruz.
if (touch.phase == TouchPhase.Began)
{
fingerStart = touch.position;
fingerEnd = touch.position;
}
if (touch.phase == TouchPhase.Moved)
{
fingerEnd = touch.position;
//Burası sağa veya sola doğru kontrolü.Başlangıç Olarak X=1 Y=2 olsun.Bitiş olarakda sağa çektiğmizi düşünürsek,
// X=2 Y=2 aynı kalsın. |(1-2)| > |(2-2)| koşulunu sağladığı için bu if'e giricek değilse aşağı yukarı hareketidir.Diyim başka bir method yazmamız lazım
//Eğer istersen onuda eklerim
if (Mathf.Abs(fingerStart.x - fingerEnd.x) > Mathf.Abs(fingerStart.y - fingerEnd.y))
{
//Bitiş x=2 başlangıç x=1 olduğuiçin bu koşulu sağladı yani sağa doğru bir çekme var.
if ((fingerEnd.x - fingerStart.x) > 0)
{
//Örneğin Her sağa doğru el hareketi yapıldığında karakterimiz 1 adım sağa gitmesini istiyorsak
//O anki karakter Pozisoyununda x'ine 1 eklememeiz lazım.Koordinat sisteminde düşün x+1 olursa y ve z sabitse sadece sağa doğru 1 adım gitmiş olur.
karakter.position = new Vector3(karakterPoz.x + 1, karakterPoz.y, karakterPoz.z);
time = 1.00f;
}
else
{
// Sola Doğru
}
}
//Aşağı ve Yukarı
else
{
//Yukarı
if ((fingerEnd.y - fingerStart.y) > 0)
{
}
//Aşağı
else
{
}
}
}
}
}