>そのままモデルがY軸プラス方向に移動し続けるか、
>もしくは、ちらっとジャンプしたかに見えると、そのままY軸のマイナス方向へと下がっていくか、
>或いは、何も動作しないか、です。
こんな不特定な動作が行われるとは思えないのですが、
少なくとも、
if ( CheckHitKey( KEY_INPUT_C ) == 1 )
{
// ここにジャンプ処理を記述
PlayerPosition.y += JumpPower;
JumpPower -= Gravity ;
}
これでは、
Cキーを押している間のみ、ジャンプの処理が行われることになります。
また、これで、Cキーを押し続けた場合、yの値は
0フレーム: 25.0 JumpPower= 20.0
1フレーム: 45.0 JumpPower= 15.0
2フレーム: 60.0 JumpPower= 10.0
3フレーム: 70.0 JumpPower= 5.0
4フレーム: 75.0 JumpPower= 0.0
5フレーム: 75.0 JumpPower= -5.0
6フレーム: 70.0 JumpPower=-10.0
7フレーム: 65.0 JumpPower=-15.0
8フレーム: 50.0 JumpPower=-20.0
9フレーム: 30.0 JumpPower=-25.0
10フレーム: 5.0 JumpPower=-30.0
11フレーム:-25.0 JumpPower=-35.0
12フレーム:-60.0 JumpPower=-40.0
… … … … … …
このように、わずか11フレームで元の位置より下の場所に行ってしまうので、
重力の値を減少させるか、ジャンプ力を増加させる必要があるでしょう。
ちなみに、Cキーを押してない間でもジャンプをさせるには、
float 力 = 0.0f
bool ジャンプフラグ = false;
…
if(Cキーが押されている場合
かつ ジャンプフラグ == false)
{
力 = 適当な値(100とか50とか)
ジャンプフラグ = true;
}
if(プレイヤーのy > 0)
{
力 -= 重力
プレイヤーのy += 力
}
else
{
ジャンプフラグ = false;
}
こんな設計にするといいかもしれません。
