我正在开发一款2D平台游戏,旨在作为学习实验。目前在跳跃逻辑方面遇到了一些问题。我明白应该对玩家应用重力,以影响跳跃和下降过程。这是我目前的实现方式。
isJumping
是一个布尔值,我用它来知道玩家是否应该向上或向下移动,以及他们当前是否处于跳跃状态,这样他们就不会再次跳起来。
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
并且永远不会停止。我在这里做错了什么?这只是完全错误的做法吗?