¿Cuánto time tomará saltar del punto A al punto B?

Necesito saber cuánto time lleva saltar de un punto a otro. Porque si el time de salto tarda, por ejemplo, 2.0f (float jumptime = 2.0f), se reproduce una animation de salto durante un intervalo de time de exactamente 2.0f. Lo difícil es que necesito saber el time de salto antes de que se ejecute el salto.

¿Es posible calcular ese derecho antes de que se ejecute el salto o es imposible calcularlo?

Utilizo la siguiente fórmula para dejar que un object (bola) salte de una plataforma a otra plataforma:

impulso = Vector2 (distancia.x / time * masa + gravedad.x / 2 * time * masa, distancia.y / time * masa + gravedad.y / 2 * time * masa);

Descripción del salto

Actualizar:

Mis cálculos

float gravity = 3, timetopeak, timetoground, totaljumptime, waytothetop, waytotheground; timetopeak = jumpForce.Y / -gravity; waytothetop = (float)(0*timetopeak + 0.5*-gravity*timetopeak*timetopeak); waytotheground = Ball.Position.Y + waytothetop - (PlatformB.Position.Y - PlatformBHeight / 2.0f - BallHeight / 2.0f); timetoground = (float)(Math.Sqrt(2 * waytotheground / -gravity)); totaljumptime = timetopeak + timetoground; Ball.ApplyLinearImpulse(ref jumpForce); //I divide the totaljumptime because the animation has 5 frames. BallAnimation = new Animation(totaljumptime/5, 32, 32, Animation.Sequences.forwards, 0, 5, false, true); 

¿Son correctos mis cálculos? Porque el totaljumptime es muy pequeño y mi animation se ejecuta demasiado rápido.

Claro que puedes saber la hora, siempre que conozcas la velocidad inicial, la aceleración (gravedad) y la diferencia de altura entre el punto A y el punto B (esto es crucial: si no sabes dónde está aterrizando la pelota, naturalmente, no sabrás la duración del salto).

Si la bola tiene una velocidad hacia arriba de v , y se acelera hacia abajo a una velocidad a , entonces el time necesario para alcanzar el pico del salto es simplemente t = v / a . Para saber cuánto viajó, esta ecuación es útil:

 s = ut + 0.5at^2 // s = distance // u = initial velocity // a = acceleration // t = time 

Enchufe nuestros valores ( v para usted y asegúrese de que a sea ​​negativo), y luego pasamos al siguiente paso. Sabes cuánto te llevó llegar a la cima del salto. ¿Qué tal abajo? Bueno, si está aterrizando a la misma altura que comenzó, entonces la duración es la misma. t * 2 . De lo contrario, necesita encontrar la distancia que todavía tiene que viajar:

 initial height + height travelled upwards - final height 

(s = ut + 0.5at ^ 2 es lo que usamos para get la distancia recorrida hacia arriba)

Una vez que tenemos eso, usa la misma fórmula nuevamente, esta vez reorganizando para resolver t :

 s = ut + 0.5at^2 // since the initial velocity is 0, it becomes: s = 0.5at^2 2s = at^2 root(2s/a) = ±t t = ±root(2s/a) // Note, we want the positive answer 

Y ahí tienes, tienes el time para que la pelota caiga desde la cima de su altura. Agregue eso al time que le tomó llegar al punto máximo del salto, y usted tiene el time total.

Si eso no fue lo suficientemente ilustrado, busca el movimiento del proyectil .

(Sí, lo anterior podría simplificarse en una sola ecuación, pero creo que es más intuitivo de entender como lo he ilustrado más arriba).