Platform ve Fizik
Bu uç durumlar çoktur. İyi eğlenceli platformlar, herhangi bir fiziksel olarak doğru şekilde davranmazlar ve oyuncuların Mario gibi "mükemmel" platformerların yıllar sonra beklediği kontrol ve davranış, Box2D veya diğer fizik motorlarıyla elde ettiğiniz gibi genel tekniklerle uygulanması inanılmaz derecede zordur. Çoğu iyi platform oyuncusu oyuncu kontrolörlerinde herhangi bir jenerik fizik veya çarpışma tepkisi kullanmaz.
Gövde Oluştur
Özel sorunuzla ilgili olarak, en iyi çözüm, kutuları zemin olarak kullanmayı bırakmaktır. Bir dizi bağlı çizgi parçası kullanın (gövde). Bu, çarpışma algılama motorunun yalnızca gerçekte yürünebilir yüzeylere odaklanmasını ve AB ile BC arasında bulunan "sahte" kenara bakmamasını sağlar. Aslında Box2D bunu yapar. Şekiller, bir gövde oluşturmak üzere birbirine bağlanan dış yüzeyleri oluşturmak için kullanılır.
Kiremit tabanlı oyunlarda veya zemin görevi gören diğer AABB nesnelerinizin olduğu durumlarda bile buna ihtiyacınız vardır. Çarpışma motoru bu dikey kenarları alır ve oynatıcının kenarlarını yakalamasına neden olur. Yardım edebilecek, ancak sorunu ortadan kaldıracak kesmek var. Çözüm, tam bir 2D kutu yerine yüzeyi temsil eden tek bir çizgi parçasına sahip olmaktır.
Çokgenleri birbirine kırparak ve klip noktalarını bir kenar listesine birleştirerek jenerik durumda gövdeleri üretebilirsiniz.
Eğimli Yüzeyler
Örneğiniz bir eğim içerdiğinden ve geri ödeme ve diğer fiziksel özelliklerden bahsettiğinizden, yakında fark edeceğiniz birkaç sorunu daha göstereceğim, bu da genel çarpışma tespiti ve yanıtının platformcular için neden iyi çalışmadığını gösterir. İlk olarak, açılı platform üzerinde durmayı deneyin, yukarı atlayın ve sonra inin. Muhtemelen karakterin iniş sırasında biraz "kayacağını" fark edeceksiniz. Sorun, oluşturduğunuz normal temasın genellikle açılı yüzeyden çıkmasıdır. Ardından, çarpışmayı çözerken, oyuncu bu yönde itilir. Karakter düz düşmüş olsa da, iniş sırasında yukarı doğru ve biraz sağa doğru itilecek ve slaytla sonuçlanacaktır. Bu bağıl hızlar dikkate alınarak saldırıya uğrayabilir,
Fark edeceğiniz ikinci sorun, düzeltilmesi daha zor olan, bir rampadan hızla koşmaya çalıştığınızda ne olacağıdır. Oyuncu rampadan "zıplayacaktır". Bu, bugün birçok AAA oyununda bile çok görülebilir. Sadece aptalca görünmekle kalmaz, eğer oyununuz oyuncunun zıplamak için yere basmasını gerektiriyorsa, bir rampadan aşağı inip yarıya inmek zorlaşır, çünkü oyuncu rampanın sadece küçük bir kısmı sırasında rampa ile temasa geçer. aşağı inmek için harcanan zaman. Daha basit bir çözüm, oyuncu hareket ettiğinde bazı ışın atmaları yapmak ve oyuncu atlamıyorsa ve daha önce yerde ise oyuncu konumunu en yakın yüzeye (oyuncuya çok yakınsa) yaslamaktır.
Ayrıca, normal bir rijit cisimmiş gibi sanki hız, sürtünme ve restitüsyonu modellemeye çalışırsanız, bir rampa koşarken oyuncunun havaya fırladığını görebilirsiniz. Oyuncunun hareketi düşme / atlamadığı sürece yatay hareketle sınırlandırılmalıdır. Tabii ki, daha eski altın çağ platformları oynarsanız, oyuncunun yatay hızının genellikle yatay ve eğimli yüzeyler arasında sabit olduğunu fark edebilirsiniz. Yokuş yukarı / aşağı yürürken bunun da dikkate alınması gerekir.
Sonunda da karşılaşacağınız birkaç başka tek köşe vakası olacak. İyi bir platform oluşturmaya çalışıyorsanız, genel fizik ve çarpışma yanıtı algoritmasına güvenmek yerine, fizikten ayrı bir platformer oyuncu denetleyicisi uygulamak ve istediğiniz hareket ve kontrol davranışını kodlamak en iyisidir.