当精灵跳跃时我使用这个抛物线逻辑。当用户点击跳转按钮时,我设置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会解决问题,但我必须遗漏一些东西,因为它无法正常工作。
有什么想法吗?
答案 0 :(得分:0)
将您的速度乘以60,因为它现在以单位/秒而不是单位/帧为单位。