Unity Jiroskop Kullanımı 2D Nesne Hareket Ettirme

Unity Jiroskop


Unity Jiroskop Kullanımı 2D Nesne Hareket Ettirme

Merhaba arkadaşlar bu yazımda sizlere Unity 3D ile oyunlarımızda özellikle mobil oyunlarımızda kullanabileceğimiz bir hareket ettirme komut dizisinden bahsedeceğim ve bu komutlar ile cihazın jiroskop özelliğinden faydalanıp nasıl bir nesneyi tuş kullanmadan telefon hareketleri ile hareket ettirebileceğimizi göstereceğim.

İlk olarak sizlere Jiroskobun ne işe yaradığından bahsetmek istiyorum çünkü direkt kodlardan ziyade biraz mantığı kavramak daha iyi olacaktır diye düşünüyorum. Jiroskop x,y ve z eksenlerinde yapılan hareketin dönüş hızını ölçen araçtır ve telefonlarımızda da jiroskop özelliği bulunuyor.

Dikey Ekranda Jiroskop Kullanımı

Şimdi Unity de bir nesne oluşturun ve ardından oluşturduğunuz nesneye bir script atın ve aşağıdaki kodları attığınız zaman telefonunuzu dik tuttuğunuz zaman sağa, sola ve ileri geri gibi yaslamalar yaparak oluşturduğunuz nesneyi hareket ettirebilirsiniz.

float speed = 1f;
void Update(){
Input.gyro.enabled = true;
this.transform.Translate(Input.gyro.rotationRateUnbiased.x * speed * Time.deltaTime, Input.gyro.rotationRateUnbiased.y * speed * Time.deltaTime, 0);
}

"Input.gyro.enabled = true;" Cihazın jiroskop özelliğinin açılmasını istediğimizi söylüyoruz.
Burada float değerinde speed olarak belirlediğimiz değişken gideceği yönde ilerlemesini istediğimiz hızı belirttiğimiz değerdir.
Daha sonrasında "this.transform.Translate()" fonksiyonu ile scriptin bulunduğu nesneye erişmesini sağlıyor ve "tranform.Translate()" komutu ile de x,y,z değerlerinde yapacağı hareketleri söylüyoruz.

Translate(x, y, z) olarak işlemler yapılır ki burada x, y ve z kordinatları belirtiyor.
"Input.gyro.rotationRateUnbiased.x * speed * Time.deltaTime" ile hareketin x düzleminde olacağını
"Input.gyro.rotationRateUnbiased.y * speed * Time.deltaTime" ile hareketin y düzleminde olacağını söylüyoruz.
Time.deltaTime ile de hareketlerin update fonksiyonunda güncelleme sıklığından etkilenmesini engelleyip her saniye aynı yolu almasını sağlıyoruz.

Yatay Ekranda Jiroskop Kullanımı
Yatay ekranda cihazın jiroskobunu kullanmak istediğimiz zaman x ve y eksenlerinin yerlerini değiştirmeniz gerekiyor.

float speed = 1f;
void Update(){
Input.gyro.enabled = true;
this.transform.Translate(Input.gyro.rotationRateUnbiased.y * speed * Time.deltaTime, Input.gyro.rotationRateUnbiased.x * speed * Time.deltaTime, 0);
}
Eğer bu değiştirmeyi yapmazsanız ekran yatay konuma geldiği zaman nesne yanlış yöne hareket ediyor. Sağa ve sola hareket ettirdiğinizde cihazınızı nesne sağa veya sola gitmek yerine ileri geri gidiyor..

Görsel Olarak Anlatım

Sahnemize Nesne Koyalım

Sahnemize bir nesne koyalım.

Script Oluşturalım

Ardından nesnemizin hareket etmesini sağlayacak kodlar için bir c# dosyası oluşturalım.

Nesne İçine Atalım

Oluşturduğumuz C# dosyasını nesnemize atalım.

Kodları yazalım

Şimdi kodlarımızı yazalım.

Bu yazı sizlere temel olarak anlatmak için hazırlanmıştır eğer gerçekten nesnelerin jiroskop ile haritada ilerlemesini isterseniz transform.Translate yerine rigibody.addforce gibi yöntemler kullanmanız gerekmektedir.

Telefon Ekran Kaydı


Not : Jiroskop kullanırken ya yatay ya da dikey bir ekran belirleyip ekranı kilitleyin yoksa jiroskop kullanırken sürekli olarak ekran dönmesi gibi sorunlar ile karşılaşabilir kullanıcı.