我实际上有一个健康栏,我想每过一秒就耗尽它。条耗尽的速率在另一个变量中声明,该变量将根据玩家在游戏中采取的行动而改变。
关于如何使用 GameTime 来实现这一点的任何提示?
这是一些您可能会发现有用的代码。首先,我们将声明一些变量以设置我们想要使用的时间间隔:
float timer = 3;
float const TIMER = 3; //We also declare a const for resetting purposes
在您的更新方法中,您可以提取自上次更新以来经过的时间(增量时间),如下所示:
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
仍然在您的更新方法中,您现在可以使用计时器变量减去经过的时间:
timer -= elapsed;
现在你只需要检查你的定时器是否过期,然后运行代码:
if (timer < 0)
{
if (health > 0)
{
health -= rate;
timer += TIMER; //reset timer
}
}
我就是这样做的。
由于我无法对乔恩的回答发表评论,我只会在他的帖子中添加评论作为回复。您可能想使用“timer += TIMER”,否则您将失去部分时间。也就是3.2秒会变成3秒。