Estou trabalhando em um jogo para iPhone 2D usando Corona (versão de teste, portanto não posso usar seus fóruns). O jogo envolve o personagem caindo no céu, e eu estou tentando implementar um "salto duplo" para o personagem, para que ele seja capaz de pular enquanto cai. Estou usando a biblioteca de física de Corona para que o personagem caia, e até agora o melhor método para fazê-lo pular é usar o método de impulso vertical
object:applyLinearImpulse(0, -0.4, object.x, object.y)
O problema que enfrento é que, quando o personagem está apenas começando (a velocidade vertical é baixa), ele pula muito alto e, quando cai há algum tempo (a velocidade vertical é alta), o salto é insignificante. Eu estou supondo que a melhor solução é usar algum tipo de equação com a velocidade como entrada para fazer o salto o mesmo, independentemente da velocidade, mas não consigo descobrir qual seria essa equação.
Ok, então esse é o meu pensamento. A questão final é: como exatamente você implementa um salto duplo com a física? Existe uma equação adequada para o meu problema? Devo adotar uma abordagem diferente? Isso já foi feito antes em jogos como Smash Bros, então existe uma solução repetível, certo?
Não tenho certeza, mas acho que jogos como o UT2K4 podem usar lógica como esta:
if (já saltou &&! Dobrou já saltou & &!! Touch ground && velocity.up é aproximadamente 0,0f) DoDoubleJump ();
Onde está o seu componente y ou z (Dependendo de qual deles está ativo)
Isso significa que seu jogador só pode fazer um salto duplo quando estiver na altura máxima do primeiro salto e estiver prestes a começar a descer novamente.
Eu gosto desse método porque ele cria um pouco de habilidade (você precisa cronometrar para que aconteça dentro de "velocity.up é de aproximadamente 0,0f").
Dependendo do que você deseja, você pode direcionar "aproximadamente 0,0f" para números positivos, para que eles possam dar um salto duplo apenas quando ainda estiverem subindo, por exemplo.
fonte