Doğru “Çifte Atlama” Uygulaması


23

Corona kullanarak 2B iPhone oyunu üzerinde çalışıyorum (Deneme sürümü, bu yüzden forumlarını kullanamıyorum). Oyun gökyüzüne düşen karakteri içeriyor ve düşerken yukarı zıplayabilmesi için karakter için bir "çift atlama" uygulamaya çalışıyorum. Corona'nın fizik kütüphanesini karakterin düşmesi için kullanıyorum ve şu ana kadar ona atlamanın en iyi yöntemi dikey dürtü yöntemini kullanmak.

object:applyLinearImpulse(0, -0.4, object.x, object.y)

Karşılaştığım sorun, karakter yeni başladığı zaman (dikey hız düşük), gerçekten yüksek atlıyor ve bir süre düşerken (dikey hız yüksek), zıplama önemsiz. En iyi çözümün, atlayışı hızdan bağımsız olarak aynı yapmak için girdi olarak hız ile bir çeşit denklem kullanmak olduğunu tahmin ediyorum, ancak bu denklemin ne olacağını çözemiyorum.

Tamam, tüm düşüncelerim bu kadar. Son soru, fizik ile çift zıplamayı nasıl uygularsınız? Sorunum için uygun bir denklem var mı? Farklı bir yaklaşım benim açmalı mıyım? Daha önce Smash Bros gibi oyunlarda yapıldı, yani tekrarlanabilir bir çözüm var, değil mi?

Yanıtlar:


37

Sadece dikey hızı sıfıra ayarlayın ve sadece ilk atlamayı yaparken kullandığınız kodu arayın.


4
Ah. Bu ... aslında oldukça iyi çalışıyor. Ve o kadar basit ki artık düşünemediğim için aptal hissediyorum. Oh iyi. Teşekkürler!
Jesse J,

5
İşleri olması gerekenden daha karmaşık hale getirmek genellikle caziptir :)
Adam Harte

2
zarif cevap!
lathomas64

1

Emin değilim, ama UT2K4 gibi oyunların böyle bir mantık kullanabileceğini düşünüyorum:
eğer (Zaten &&! Zıpladı, Zıpladı ve &!!) Zemine dokunduğumda && velocity.up yaklaşık 0.0f) DoDoubleJump ();

Y ya da z bileşeniniz nerede (hangisinin yukarı
olduğuna bağlı olarak) Bu, oynatıcınızın yalnızca ilk atlamalarının maksimum yüksekliğinde olduğu ve tekrar aşağı inmek üzere olduğu durumlarda çift atlama yapabileceği anlamına gelir.
Bu yöntemi seviyorum çünkü biraz yetenek yaratıyor (“velocity.up'ın yaklaşık 0.0f” içinde olması için zamana ihtiyacınız var).
İstediğinize bağlı olarak, "yaklaşık 0.0f" yi pozitif sayılara doğru bastırabilirsiniz, böylece örneğin hala yukarı hareket ederken sadece çift zıplayabilirler.

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.