ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

放物線のジャンプ

放物線を描くジャンプは等加速度運動で表現すればよい。
コードとしては次のような感じ。値や関数は適当。

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)で重力が求められ、ジャンプ力はこれに時間をかければ良い。