如果帧速率低,则定位精灵

时间:2017-10-11 14:15:18

标签: c# xna monogame game-development

当精灵跳跃时我使用这个抛物线逻辑。当用户点击跳转按钮时,我设置mVY = -300

int mVY = 0;   
public override void Update(GameTime theGameTime)
{
    Vector2 speed = Vector2.Zero;
    Vector2 direction = Vector2.Zero;

    if (mVY < 0)
    {
        speed.Y -= mVY;
        direction.Y = -1;
    }
    else
   {
        speed.Y += mVY;
        direction.Y = 1;
    }

    mVY += 8; 
    if (mVY > 300)  mVY = 300; // Limit maximum speed if falling

    Position += direction * speed * (float)theGameTime.ElapsedGameTime.TotalSeconds;

    ...
}

当我的游戏以60fps运行时,此代码可以正常运行,但是当它的速度低于此值时,跳跃非常高且速度慢。我认为乘以GameTime.ElapsedGameTime.TotalSeconds会解决问题,但我必须遗漏一些东西,因为它无法正常工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

将您的速度乘以60,因为它现在以单位/秒而不是单位/帧为单位。