Yol Animasyonları Android | ProAndroidDev

Yol Animasyonları Android |  ProAndroidDev
kaynak: https://www.telegraph.co.uk/travel/travel-truths/what-is-a-near-miss-and-how-common-are-they-aviation-planes/

Bu Yazımızda Bir Uçağı veya Ekranı Uçacağız

Yol bir android sınıfıdır, çok kullanışlıdır veya çoğu zaman android’de rastgele şekiller ve rastgele şekiller oluşturmak için tek seçimdir, Path ayrıca animasyonlarda kullanılır. Ancak çoğu zaman yollarla çalışmak çok acı vericidir. Bu acıya daha fazla katlanmak istemiyorsanız, makalenin geri kalanında bana katlanın.

Bu yüzden yol animasyonlarını kullanarak rastgele bir yolda bir uçağı uçuracağız.

Hayatta Rastgele Bir Yol Almak

Ekranda rastgele bir yol oluşturacağım, uçağımız sadece o yolda uçacak.

rastgele bir uygulama çalışması için rastgele yol çizmenin sonucu

burada anahtar yöntem quadTo() ikinci dereceden bir bezier eğrisi oluşturmak için kullanılan, birbirine bağlı birden fazla bezier eğrisi oluşturuyorum, her yolun başlangıç ​​noktası (bezier eğrisi) paths dilinde kontur olarak adlandırılır, ayrıca bir cubicTo() 2 kontrol noktasına sahip bir kübik bezier eğrisi oluşturmak için kullanılır.

Kontrol noktalarının ne olduğunu ve yukarıdaki kodun başlık altında nasıl çalıştığını anlamanız için bezier eğrisi hakkında daha fazla bilgi edinmenizi tavsiye ederim.

Bu yolu oluşturan noktaların x ve y koordinatlarını bilmemiz gereken bir yol boyunca bir uçak uçurmak istiyoruz, böylece x ve y’yi veya düzlemimizi bu koordinatlar üzerinde ayarlamaya devam edebiliriz. Gerçekten önemli bir sınıfı anlamamız gereken bu koordinatları bilmek için bir animasyon üretin.

yolölçümü Path sınıfının en iyi arkadaşı sınıfıdır, bir yol biraz utangaçtır, size uzunluğu, bir doğrunun vücudunun herhangi bir noktasındaki tanjantı, iki nokta arasındaki bir doğrunun uzunluğu gibi kişisel şeylerini doğrudan söylemez. kapalı mı değil mi vs.

PathMeasure’ı ortak arkadaş olarak isteyebilmeniz için olabildiğince fazla bilgi almak istediğiniz yolları ele almak için, yol boyunca sizi buna alıştıracağım.

getPosTan

getPosTan(float distance, float[] pos, float[] tan) bu yöntem, belirli bir mesafedeki bir yol üzerindeki noktaların koordinatlarını almak için kullanılır.

Üç argüman alır

distance koordinatları bu mesafede alacağız

pos x ve y koordinatları bu şamandıra dizisinde yazılmıştır

tan radyan cinsinden tanjant bu diziye yazılır

sonrakiKontur

Yolumuz birkaç quadTo() komutlar getposTan() veya diğer yöntemler yolölçümü tüm yolu bir kerede işlemezler, aksine onlar bir seferde bir komut üzerinde çalışırlar, bizim durumumuzda bir konturun bir yol tarafından oluşturulan bir yol olduğunu söyleyebilirsiniz. quadTo() aradığımız sonrakine geçmek için arayın nextContour() Bu yöntem, bir sonraki yol varsa, yolun tamamıyla işimiz bittiğinde false değerini döndürür.

Bu yüzden, yoldaki sonraki mesafeler için sürekli olarak bu koordinatları almaya devam edersek, bu koordinatlara bir nesne koyabiliriz ve hareket ediyor gibi görünecektir, şimdi yapacağımız şey bu.

yukarıdaki animasyonun açıklaması

buradan animasyon yapıyoruz 0f ile 1fyukarıdaki resimde açıklamaya çalıştığımız farklı uzunluklarda koordinatlar verecek bir koordinat aldıktan sonra düzlemimizin x ve y’sini o koordinatlarda ayarlıyoruz atladığımız bir eğri üzerinde bir konturla işimiz bittiğinde kullanarak bir sonrakine nextContour() tüm yol bitene kadar.

şimdi sadece alıyoruz pos animasyon sırasında koordinatların yazıldığı ve düzlemimizi bu koordinatların üzerine yerleştirdiğimiz için değer animasyonunda her animasyonlu değerde geçersiz kıldığımız için animasyon düzgün görünecektir.

ama hey uçaklar geriye ya da yanlara uçmuyor doğaya karşı gelemeyiz ve fizik yasalarını çiğneyemeyiz bu konuda bir şeyler yapmalıyız.

Hayatta doğru bir yön almak

Üçüncü argümanı hatırlıyor musun? getPostTan() Yukarıdaki resimde de açıklanan eğri üzerinde herhangi bir noktada teğet veren, düzlemin ucunu doğru yönde hizalamamıza yardımcı olacaktır.

burada teğet oluyoruz pos daha sonra bu açıyı dereceye dönüştürmek, düzlemin dönüşünü buna göre ayarlıyor.

Bunu ilginç bulursanız, kodumun tamamını bulabilirsiniz. Github

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.