Mobil Platformlarda Dokunma Yöntemi-Sanal ışık ve Mouse Yöntemi

Herkes  Yazar Herkes Yazar

08 Ocak 2021 Yazılım Dilleri (151) /Unity (15) (108)

Paylaşmak güzeldir. Lütfen sizde paylaşın...


Mobil Platformlarda Dokunma İşlemleri
1- OnMouseDown fonksiyonu ile nesneyi yok etmek

Önemli Hatırlatma: Mouse'a yönelik tıklamaların,ayarlamaların hepsi dokunmatik ekranlarda çalışacaktır.

OnMouseDown()://Nesneye tıklandığında 1 kez çalışan fonksiyon

OnMouseUp(): //Nesneye tıklanıp parmak çekildiğinde 1 kez çalışan fonksiyon

OnMouseDrag()://Nesneye tıklanıp parmak sürüklenirken sürekli çalışan fonksiyon

Sürükle bırak ile nesnenin yerini değiştimek için  OnMouseDrag Örneğimiz;
//Örnekte bu kodlar ilgili nesnenin scriptinde yazılmıştır.
private void OnMouseDown()
{
  
transform.localScale=new Vector3(3,3,3);// Tıklanan nesneyi 3 birim büyütür 

}

private void OnMouseUp()
{


}


private void OnMouseDrag()
{
//Mouse ile veya dokunarak nesneyi süreükleyerek yerini değiştirebiliriz. Sürükle bırak ile nesnenin yerini değiştimek.
transform.position=Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x,mousePosition.y,10.0f));=  // Camera.main =Kamera komponentine erişir
//Bu kod cameramızdaki dokunalan noktayı dünyadaki noktaya uyar. Muse ile dokunuduğu koordinatlar

}​

kamera.ScreenToWorldPoint(poziyon); Oyun ekranındaki (kameranın görüş alanındaki) pozisyonunu bulmak için kullanılır.

Kamera Komponentine erişmek için;

kamera=GameObject.Find("main camera").GetComponent<camera>();
//Bunun daha kolay yolu ise ;
Camera.main; //kodudur.


Ekrana Dokunma-Touch

Touch: Dokunma İşleminin Değişken Türü

Input.touch.Count: Ekrana Dokunan parmak Sayısı

TouchPhase (TouchPhase.began,TouchPhase.Moved,TouchPhease.Stationary,TouchPhase.Ended): Ekrana dokunan parmağın durumu
TouchPhase.began: Ekrana ilk dokunulduğu an bir kez çalışır
TouchPhase.Moved: Ekrana dokulduktan sonra parmak hareket ediyor ise sürekli
TouchPhease.Stationary: Ekrana sürekli dokunuluyor ve herhangi bir haraket yoksa sürekli
TouchPhase.Ended:Ekrana ilk dokunma bittiği an bir kez çalışır1- OnMouseDown fonksiyonu ile nesneyi yok etmek


Örnek:

2- Sanal Işık göndererek nesneyi yok etmek


void Update()
{

if(input.touchCount()>0
{
 Touch dokunma=InputGetTouch(0);//0 = 1 Parmak dokunuşu 1 ise iki parmak dokunuşunu kasteder.

 Debug.Log(dokunma.deltaPosition)//X ve y koordinatlarında kaç pixellik hareket ettirilmiş bilgisini verir.

if(dokunma.phase==TouchPhase.Began)
{
  Debug.Log("dokunuldu");
  Debug.Log(dokunma.position)//Dokunulan yerin koordinatı
}
if(dokunma.phase==TouchPhase.Stationary)
{
  Debug.Log("dokunuluyor");
}
if(dokunma.phase==TouchPhase.Moved)
{
  Debug.Log("sürükleniyor");
}
if(dokunma.phase==TouchPhase.Ended)
{
  Debug.Log("çekildi");
}
}

}

position: Ekrana dokunan parmağın x ve y kordinatı

deltaPosition: Ekrana dokunan parmağın x ve y kordinatnda kaç pixellik hareket ettiği

Nesneye Dokunma:


RaycastHit nesne; // Işının çarptığı nesnelerin bilgisini (ismini ,tag'ını) verir.

Physics.Raycast(kamera.ScreenPointToRay(x,y,x),out nesne);//kameranın Vector3 türündeki koordinatından (x,y,z) bir ışın yollar. çarptığı nesnelerin bilgisini nesne değişkenine atar.

public GameObject nesne;
Camera kamera;
// Dokunulan nesne silinir

void Start()
{
 kamera=GameObject.Find("main camera").GetComponent<camera>();
  //Bunun daha kolay yolu ise Camera.main  kodudur.
}

void update()
{

if(Input.touchCount>0
{
Touch dokunma=Input.GetTouch(0); // Tek Parmak dokunması

RaycastHit carpilan_nesne;

if(Physics.Raycast(kamera.ScreenPontoRay(dokunma.position), out carpilan_nesne))
{
//kameranın Vector3 türündeki koordinatından (x,y,z) bir ışın yollandı. çarptığı nesnelerin bilgisini carpilan_nesne değişkenine atadık.

if(carpilan_nesne.collider.gameObject.name=="kup") 
{
   //ışının çarptığı nesne (carpilan_nesne ) adı kup ise
  Destroy(carpilan_nesne.collider.gameObject);//Dokunulan yani carpilan_nesne silinir
}
}
}

}​

Butonara Dokunma :

Bu konu butona tıklamaktır. Mobil Platformlarda da Onclick() Eventı veya triggre ile tetiklenir


Paylaşmak güzeldir. Lütfen sizde paylaşın...



Herkesyazar Ara