私は学習実験として2Dプラットフォーマーに取り組んでおり、現在、ジャンプロジックに少し問題があります。重力をプレーヤーに適用する必要があることを理解しています。これは、ジャンプと下降のプロセスに影響します。これが私が現在それをどのように実装しているかです。
isJumping
これはbool
、プレーヤーが上昇するか下降するか、現在ジャンプ中かどうかを知るために使用するものなので、再びジャンプすることはありません。
spriteJumpPosition
は、プレーヤーがジャンプする高さを制限するために使用する値です(デフォルトは0、上限の10は以下にハードコードされています)。
void UpdateGravity()
{
// Check if player is currently jumping
if (isJumping == true)
{
if (spriteJumpPosition < 10)
{
spritePosition.Y += (float)gravity;
spriteJumpPosition += gravity;
}
else if ( spriteJumpPosition >= 10 )
{
isJumping = false;
spritePosition.Y -= (float)gravity;
spriteJumpPosition -= gravity;
}
}
else if ( isJumping == false )
{
if (spriteJumpPosition > 0)
{
spriteJumpPosition -= (int)gravity;
spritePosition.Y -= (float)gravity;
}
}
}
上記のコードでは、現在の動作では、プレーヤーが少し下に移動し(おそらく、2〜3フレーム)、上に移動し始めますが、isJumping = false
停止することはありません。私はここで何が間違っているのですか?これは、これを実行するための完全に間違った方法ですか?