放物線を描くジャンプは等加速度運動で表現すればよい。
コードとしては次のような感じ。値や関数は適当。
float Acc = 0.0; // 加速度 float PosY = 0.0; // Y座標 #define JUMPPOWER (100.0) // ジャンプ力 #define GRAVITY (0.98) // 重力 // ジャンプ開始 void startjump() { Acc = JUMPPOWER; } // ジャンプ中 void jump() { Acc -= GRAVITY; PosY += Acc; if ( PosY < 0.0 ) // 0.0は地面 { // 着地 PosY = 0.0; } }
高さと頂点までの時間が決まっている場合、高さ/(時間×(時間+1)×0.5)で重力が求められ、ジャンプ力はこれに時間をかければ良い。