3

我实际上有一个健康栏,我想每过一秒就耗尽它。条耗尽的速率在另一个变量中声明,该变量将根据玩家在游戏中采取的行动而改变。

关于如何使用 GameTime 来实现这一点的任何提示?

4

2 回答 2

2

这是一些您可能会发现有用的代码。首先,我们将声明一些变量以设置我们想要使用的时间间隔:

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
    }
}

我就是这样做的。

于 2013-05-28T16:42:15.017 回答
0

由于我无法对乔恩的回答发表评论,我只会在他的帖子中添加评论作为回复。您可能想使用“timer += TIMER”,否则您将失去部分时间。也就是3.2秒会变成3秒。

于 2013-05-28T17:00:02.263 回答