Yerçekimi olan bir dünyada bir karakterin eğimli bir yamaç boyunca hareket etmesini sağlamak


10

Bu oyunu gördüm

Fantazi Pantolon 2 . Ve fizik ve güzel animasyonlardan ayrı olarak fark ettiğim şey, karakterin yamaçlarda, hatta eğimli yamaçlarda hareket ettiği. Box2d'de çok az tecrübem var, ama bu kavisli yamaç kavramı benim için yeni. Birisi bu kavram ve uygulaması hakkında beni aydınlatırsa bana çok yardımcı olur. Uygulama box2d içinde olmasa bile, kabul edilir.


2
N (Flash'ta olan) yapan Metanet, eğrileri nasıl hesapladıklarını kapsayan çarpışmaların nasıl yapıldığına dair bir öğreticiye sahiptir: metanetsoftware.com/technique/tutorialA.html
CodexArcanum 13:10

Yanıtlar:


5

Box2D'de nasıl eğriler elde edersiniz?

Gelen Box2D yayımlanmamış versiyonu , iki yeni şekil türleri vardır b2LoopShape ve b2EdgeShape satır bölümlerinin bir dizisine üzerinden eğrileri oluşturmak izin.

Yayınlanan sürümde, benzer bir etki elde etmek için açılara ayarlanmış birden fazla küçük kutu kullanabilirsiniz, ancak gövdelerin bağlantı noktalarının yakınında kararsız ve beklenmedik şeyler yapma eğilimi vardır. Bu yüzden yayınlanmamış sürümü kullanmanızı tavsiye ederim.

Bir karakter nasıl eğri düşebilir?

Karakteri bir tekerlek yap! Platform fiziği ile ilgili sorumun bu konuda biraz tartışması var , ancak temel fikir, karakterinizin vücudunu dönen bir tekerleğe monte etmek ve tekerleğe dönme kuvveti uygulayarak hareket etmektir. Tekerleğin sürtünmesi olsa da (aslında) yerçekiminden aşağıya doğru uygulanan kuvvet, gerçek bir tekerlek gibi yokuş aşağı dönmesine neden olur. Revolute eklemin motor parametrelerini değiştirerek, küçük eğimleri yuvarlamaktan kaçınmak için dönüşe gerektiği kadar direnç gösterebilirsiniz.


Size katılıyorum, b2LoopShape kullanarak arzum olarak bir eğim oluşturabilirim. Ancak, gönderdiğiniz bağlantıyı izleyerek; Sorun, sadece c ++ sürümü box2d flash portuna yol açmıyor. 1.) Bunun için herhangi bir öneriniz var mı? veya 2.) Flaş için eğri eğimlerin oluşturulmasına izin veren başka bir fizik motoru biliyor musunuz?
Vishnu

Box2D'nin Flash bağlantı noktasının yeni eklem / şekil türleriyle güncel olduğunu sanmıyorum. Flash için Box2D dışında hangi fizik motorlarının mevcut olduğu hakkında hiçbir fikrim yok.

@ Joe: Sana sorarsam, b2LoopShape için bir AS sınıfı yazmayı denesem mümkün olur mu? Böylece Box2d Flash api'ye dahil edebilirdim. Nereye gitmeye başlamam gerekir? Bir ipucu?
Vishnu

1

Fancy Pants Flash'ta yapıldı ve Flash, çizilen her şeye karşı bir pikseli (bu durumda muhtemelen 2-3 piksel hitTest yapar) test etmenizi sağlayan 'hitTest' adlı belirli bir yönteme sahiptir. belirlenmiş bir film klibi nesnesi içinde. Doğru hissetmek biraz zor olabilir, ancak bu yerleşik işlev, bu kadar çok Flash oyununun eğimli yamaçlarla çarpışmasının nedenidir. Süreç diğer motorların çoğu için çok daha karmaşıktır ve genellikle manuel olarak yapılması gerekir, ancak birkaç farklı yöntem vardır.

En çok tanıdığım yöntem, motorunuz kiremit tabanlıysa (Sonic the Hedgehog'u düşünün), kavisli olarak gösterilen döşemelerin her birinin karakterin mevcut 'X' konumuna göre 'Y' çarpışma konumunu belirleyen bir formülü olabilir. o kiremit üzerinde. Formülü bir eğimin ne kadar dik olduğuna ve ne kadar eğri aradığınıza bağlı olarak belirlemeniz gerekir. Formülleri denemek için bir grafik hesap makinesi veya grafik programı kullanabilirsiniz. Bu şekilde kendileriyle ilişkili farklı eğrilere ve formüllere sahip birden fazla döşemeye sahip olabilirsiniz.


Sonic'in karolar için bir eğri formülü yoktur. Her piksel için 2d yükseklik haritası kullanır.
AttackingHobo

@AttackingHobo: Bana her piksel için 2 yükseklik haritasının ne olduğunu söyleyebilir misin veya beni flash oyunlarda kullanabileceğim bir yere yönlendirebilir misin?
Vishnu

2
info.sonicretro.org/Sonic_Physics_Guide Şuna bir göz atın. Kutu 2d'yi kullanırsanız bunun size yardımcı olup olmayacağını bilmiyorum. Kendi fizik motorunuzu döndürmeniz gerekebilir.
AttackingHobo

@ Hota: Hobo: kavisli yamaçları "yapmak" herhangi bir avantaj veya olasılık var mı Ben box2d api döngüler sağlayan bir AS 3.0 sınıfı yapmaya çalışırsanız?
Vishnu
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.