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;
//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 durumuTouchPhase.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
}
}
}
}