Implementare correttamente un "doppio salto"


23

Sto lavorando a un gioco per iPhone 2D con Corona (versione di prova, quindi non posso usare i loro forum). Il gioco prevede che il personaggio cada attraverso il cielo e sto cercando di implementare un "doppio salto" per il personaggio, in modo che lui possa saltare in alto mentre cade. Sto usando la libreria di fisica di Corona per far cadere il personaggio, e finora il metodo migliore per farlo saltare è usare il metodo dell'impulso verticale

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

Il problema che devo affrontare è che quando il personaggio è appena agli inizi (la velocità verticale è bassa), salta davvero in alto e quando cade per un po '(la velocità verticale è alta), il salto è trascurabile. Immagino che la soluzione migliore sia usare una sorta di equazione con la velocità come input per rendere il salto uguale indipendentemente dalla velocità, ma non riesco a capire quale sarebbe quell'equazione.

Ok, quindi sono tutti i miei pensieri. La domanda finale è: come si implementa esattamente un doppio salto con la fisica? Esiste un'equazione corretta per il mio problema? Dovrei adottare un approccio diverso? È già stato fatto in giochi come Smash Bros, quindi c'è una soluzione ripetibile, giusto?

Risposte:


37

Basta impostare la velocità verticale su zero e chiamare lo stesso codice che usi per fare il primo salto.


4
Oh. Quello ... in realtà funziona abbastanza bene. E così semplice che ora mi sento sciocco per non pensarci. Oh bene. Grazie!
Jesse J,

5
Spesso si è tentati di rendere le cose più complicate di quanto debbano essere :)
Adam Harte,

2
risposta elegante!
lathomas64,

1

Non ne sono sicuro, ma penso che giochi come UT2K4 potrebbero usare la logica in questo modo:
if (già saltato &&! Raddoppiato saltato ancora &&! Toccando terra && velocity.up è circa 0,0f) DoDoubleJump ();

Dove in alto è il componente y o z (a seconda di quale è in alto)
Ciò significa che il tuo giocatore può fare un doppio salto solo quando si trova alla massima altezza del primo salto e sta per ricominciare.
Mi piace questo metodo perché crea un po 'di abilità (è necessario che si verifichi all'interno di "velocity.up è circa 0,0f").
A seconda di ciò che si desidera, è possibile inclinare "circa 0,0f" verso numeri positivi in ​​modo che possano raddoppiare il salto solo quando si spostano verso l'alto, ad esempio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.