【发布时间】:2016-05-31 13:01:09
【问题描述】:
我正在开发 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 并且永远不会停止。我在这里做错了什么?这只是完全错误的方法吗?
【问题讨论】: