Unity Mobil Oyunlarda Kullanıcıdan Input Almak
Unity’de mobil oyunlarda kullanıcıdan veri almak için Input sınıfının özelliklerinden faydalanırız. Bu yaz
Unity’de mobil oyunlarda kullanıcıdan veri almak için Input sınıfının özelliklerinden faydalanırız. Bu yazıda kullanıcının ekranda dokunduğu yerin fiziksel koordinatlarını ve dokunma hakkındaki diğer bilgileri almayı öğreneceğiz. Android ve Ios cihazlar için bu
Unity Input.Touch Sınıfı Parametreleri
fingerId Dokunuş için benzersiz numara
position Dokunuşun ekrandaki koordinatı
deltaPosition Son dokunuşla şimdiki dokunuş arasındaki değişim.
deltaTime Son dokunuştan bu yana geçen zaman.
tapCount Dokunuş sayısı. Üst üste basarsanız görebilirsiniz.
phase Dokunuş tipini belirtir.
Began Bir parmak ekrana dokunuyor.
Moved Bir parmak ekranda hareket ediyor.
Stationary Bir parmak ekrana dokunuyor fakat hareket etmiyor.
Ended Bir parmak ekrandan kaldırıldı. Bir dokunuşun son aşaması.
Kullanıcıdan Input Almak (Dokunma Bilgilerini Görüntüleme)
Dokunma bilgilerini ancak bir mobil cihazda görebiliriz. Bu yüzden Unity’de test edemeyeceğiz. Bunun için projemizi build etmemiz gerekiyor. Android telefonunuza çıkardığınız apk’yı yükleyerek aşağıdaki çıktıyı elde edeceksiniz. Cihazdan cihaza maksimum dokunma sayıları değişmektedir.
Yukarıdaki çıktıyı elde etmek için bir script dosyası oluşturun. Ben adını TouchController koydum. Eğer farklı bir isim verecekseniz aşağıdaki class ismini değiştirmeniz gerekecektir.
public Text touchesText; // Ekranda dokunmaları göstereceğimiz Canvas > Text objesi
string touches = ""; // dokunmaların tutulacağı değişken
void Update() // Sürekli çalışan fonksiyon
touches = ""; // dokunmaları sıfırlıyoruz.
//dokunma bilgilerini değişkene atıyoruz.
touches += "FingerId: " + touch.fingerId + " Dokunma Tipi: " + touch.phase + " Delta Position:" + touch.deltaPosition;
touches += " Tap Count: " + touch.tapCount + " Position:" + touch.position;
touches += Environment.NewLine; // diğer dokunma için yeni satıra geçiyoruz
if (touches != "") // dokunmalarda bir değişiklik varsa text objesindeki değeri değiştiriyoruz.
touchesText.text = touches;
Yukarıdaki kodları yazdıktan sonra Hiyerarşi penceresinde bir GameObject’e sürükleyip bırakın. Bu konu hakkında daha fazla bilgi için Arayüzün Kapsamlı İncelenmesi adlı yazıyı okuyabilirsiniz. Daha sonra bir Hiyerarşi penceresinde Create butonuna tıklayıp UI > Text yolunu takip ederek bir canvas ve text oluşturun. Text objesini Scene penceresinde manuel olarak konumlandırabilirsiniz. Benim konumlandırma ve yazı tipi ayarlarım aşağıda inspector penceresinde yer almaktadır.
Şimdi yazdığımız scriptimizi yukarıda Hiyerarşi penceresinde bulunan TouchController objesine aşağıdaki gibi sürükleyip bırakın.
Projenin android telefonlarda kullanılmasını sağlamak için build etmemiz gerekiyor. İleride android telefonlar için nasıl apk çıkaracağımızı anlatacağımız bir yazı yayınlanacak. Yazı yayınlandığı zaman buraya link verilecektir.
Projenin yazıldığı Unity Versiyonu: 2019.1.7f1
Proje kaynak dosyasını indirmek için buraya tıklayabilirsiniz.