[Unity3D] Parmakla Ekranı Kontrol Etme - Oyun Geliştiren Blogger

[Unity3D] Parmakla Ekranı Kontrol Etme



Merhaba oyun geliştiriciler,
Bugün size ekranı parmağımızla kaydırarak oyun yapacağız.(Tam olarak anlatamadım ama siz örnekte anlarsınız :))


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class OyunSwipe : MonoBehaviour {
  Vector2 DokunmayaBasladıgımızPozisyon;        //SWiPE = KAYDıRMAK
  Vector2 ilkdokunma,swipeDelta;

 [SerializeField]float SwipeMinY;
 [SerializeField]float SwipeMinX;


 public Image arkaplan,resim;
 public Sprite sol,sag,üst,alt;
 public int sayi,yapılan,tiklamagecis1,tiklamagecis2;
 bool yukarıb,asagib,sagb,solb,dogru,yanlis;
 public bool zamanb;
 public float zaman,maxzaman;
 public GameObject digerkaydırma,zamanobje;


 void Start(){
  
 }
 void Update () {
  zamanobje.transform.localScale = new Vector3 (1,zaman/maxzaman,1);
  if (Input.touchCount > 0) {
   Touch t = Input.touches [0];


   if (t.phase == TouchPhase.Began) 
   {
    DokunmayaBasladıgımızPozisyon = t.position;
   }
   else if(t.phase==TouchPhase.Ended){
    float swipeVertical = (new Vector3 (0, t.position.y, 0) - new Vector3 (0, DokunmayaBasladıgımızPozisyon.y, 0)).magnitude;
    if (swipeVertical > SwipeMinY) {
     float u = Mathf.Sign (t.position.y - DokunmayaBasladıgımızPozisyon.y);
     if(u>0)
     {
      //Yukarı Kaydır
      yukarıb=true;
     }
     if (u < 0) 
     {
      //Aşağı Kaydır
      asagib=true;
     }
    }

    float swipeHorizontal = (new Vector3 (t.position.x, 0, 0) - new Vector3 (DokunmayaBasladıgımızPozisyon.x, 0, 0)).magnitude;
    if (swipeHorizontal > SwipeMinX) {
     float u = Mathf.Sign (t.position.x - DokunmayaBasladıgımızPozisyon.x);
     if(u>0)
     {
      //Sağa Kaydır
      sagb=true;
     }
     if (u < 0) 
     {
      //Sola Kaydır
      solb=true;
     }
    }
   }
  }
  if (yapılan == tiklamagecis1 && yapılan== tiklamagecis2) {
   DigerKaydırma ();
  }


  if (zaman < 0) {
   zamanb = false;
   yanlis = true;
   zaman = maxzaman;
   Reset ();
   yapılan += 1;

  }
  if (zaman < maxzaman) {
   zamanb = true;
  }

  if (sayi == 1) {
   //YaziyiYazdır ("Yukarı");
   resim.sprite=üst;
   zaman-=1*Time.deltaTime;
   if(yukarıb && zamanb){
    dogru=true;
   } 
   if (solb || sagb || asagib) {
    yanlis = true;
   }
  }
  if (sayi == 2) {
   //YaziyiYazdır ("Aşağı");
   resim.sprite=alt;
   zaman-=1*Time.deltaTime;
   if(asagib && zamanb){
    dogru=true;
   } 
   if (yukarıb || sagb || solb) {
    yanlis = true;
   }
  }
  if (sayi == 3) {
   //YaziyiYazdır ("Sol");
   resim.sprite=sol;
   zaman-=1*Time.deltaTime;
   if(solb && zamanb){
    dogru=true;
   }
   if (yukarıb || sagb || asagib) {
    yanlis = true;
   }
  }
  if (sayi == 4) {
   //YaziyiYazdır ("Sağ");
   resim.sprite=sag;
   zaman-=1*Time.deltaTime;
   if(sagb && zamanb){
    dogru=true;
   } 
   if (yukarıb || solb || asagib) {
    yanlis = true;
   }
  }

  if(dogru){
   arkaplan.color=Color.green;
  }
  if(yanlis){
   arkaplan.color=Color.red;
  }
 }
 public void DigerKaydırma(){
  gameObject.SetActive (false);
  digerkaydırma.SetActive (true);
  yapılan += 1;
  Reset ();


 }
 public void Reset(){
  sayi = Random.Range (1, 5);
  asagib = sagb = solb = yukarıb = dogru = yanlis = false;
  zaman = maxzaman;
  zamanb = true;
  arkaplan.color = Color.white;
  DokunmayaBasladıgımızPozisyon = new Vector2(0,0);
 }
}
Evet arkadaşlar kod bu . Eğer biraz incelerseniz her şeyi anlayabilirsiniz. Sonraki derslerde bu "Touch" özelliğine değinmeyi düşünüyorum. Takipte kalın :) Yapamadığınız,hata aldığınız,anlayamadığınız yer varsa yorumlarda sizi bekliyorum :)

Yorum Gönder

2 Yorumlar