Android geliştirme yaparken animasyon oluşturmanın en iyi yolu nedir?


10

İlk Android oyunumu oluşturmaya çalışıyorum ve şu anda (çizimleri yapacak biriyle ve başka bir programcıyla) animasyon oluşturmanın en iyi yolunun ne olduğunu anlamaya çalışıyorum. (Karakter taşıma gibi animasyonlar)

İlk başta, tasarımcı nesneleri / karakterleri çizebileceğini ve flaşla canlandırabileceğini söyledi, böylece bir eylemin her karesini çizmek zorunda kalmadı. Diğer programcı ve ben Flash'ı çok fazla bilmiyorum, bu yüzden Flash animasyonundan tüm görüntüleri çıkarmanızı ve animasyon başlayacağı zaman birbiri ardına görünmelerini önerdim.

Bunun CPU'da çok fazla kaynak alacağını söyledi ve katılıyorum, ancak donanımda çok zor olmadan ve mümkünse tasarımcı Adobe Illustrator'daki her kareyi çizer.

Deneyimli bir Android oyun geliştiricisi bunu dengelememe yardımcı olabilir mi, böylece animasyon oluşturmanın en iyi yolunun ne olduğu hakkında hiçbir fikrim yok gibi oyunun diğer bölümlerine geçebiliriz.

Yanıtlar:


12

2D animasyonu düşünüyorsanız, bir hareketli grafik ve diğerini oluşturmak cihaz için bir sorun oluşturmaz (hareketli grafikleriniz çok büyük değilse).

Aşağıda küçük bir arama ile bulduğum ilk animasyon karakteridir. Bu yaygın olarak kullanılan bir tekniktir ve ücretsiz (ve aksi halde, her zaman lisansı kontrol edin) sprite sayfaları sunan birçok web sitesi vardır.

Görüntü kaynağı: [burada] (http://gaminggroundzero.com/?page_id=31)

Resim + yazar kaynağı: burada

Yeşil, görüntünün saydam rengi olarak ayarlanır, böylece istenmeyen renk alanlarınız olmaz. Oynatmak için hareketli grafik sayfasındaki animasyon dizisindeki her animasyonun koordinatlarını bilmeniz gerekir.

Android için Chris Pruett (eski Google) adlı açık kaynaklı bir oyun motoruna bakabiliriz. Replica Island . Kaynak kodu mevcuttur ve onun SpriteAnimation.java ve SpriteComponent.java'larına bakabiliriz .

bir SpriteAnimation basitçe bir kare sayısı ve benzersiz bir kimlik ile oluşturulur ve oyundaki her aktör birden fazla animasyona sahip olabilir. SpriteAnimationBir dizi verilebilir AnimationFramemilisaniye cinsinden bir süreye sahip s, her. Bu, karakterin hareket etmesine veya saldırılara vb AnimationComponent.playAnimation(int id). Bağlı olarak farklı animasyonların içeri ve dışarı değiştirilebileceği anlamına gelir .

Oyun döngüsünün her yinelemesi AnimationFrame' getFrame(float time)denir ve son ana döngü yinelemesinden bu yana ne kadar zaman geçtiğini kontrol eder ve bir sonraki oynatılan kareye karar verir, ardından oluşturma sistemine gönderilecek çerçeveyi döndürür. Bu, animasyon çok yavaş gidiyorsa animasyon karelerini atlamasına olanak tanır.

Umarım bu örnek işe yarar ve burada Android Market'teki gerçek oyunda kullanıldığını görebilirsiniz .


İyi açıklanmış ve ayrıntılı cevap için çok teşekkürler! Bunu oyunuma nasıl uyarlayabileceğimi göreceğim. Bu çok yardımcı!
Adam Smith

@AdamSmith: Sprite sayfalarını böyle kullanmak 2D animasyonlar için en iyi yoldur. Sanatçınızı animasyonları bir sprite sayfasına paketleyebileceğiniz
bummzack

@bummzack Bu, umduğum türde bir cevaptı, teşekkürler!
Adam Smith

@AdamSmith de (karışıklığı önlemek için) Replica Island'ın aslında sprite sayfaları kullanmadığını, tek dosyaları kullandığını belirtmek gerekir. Sprite sayfalarının neden yararlı olduğuna dair tartışma burada ve (daha ayrıntılı olarak) burada bulunabilir .
Martin Foot

@Martin Foot, Çok güzel bir açıklama yaptınız. Ama hala karışıklık var, ben 10-15 tür animasyon yaşıyorum ve her birinin tam ekran animasyon diyebileceğiniz 320x480 boyutunda kareleri var. Öyleyse bana SpriteSheet veya Single animation kaynak dosyası için ne öneririm? Ne kullanacağım konusunda çok kafam karıştı. Lütfen bana en iyi yolu önerin .. Çok teşekkürler ....
Akrep
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.