C# 在XNA中获得持续3秒的奖励

C# 在XNA中获得持续3秒的奖励,c#,timer,xna,C#,Timer,Xna,我正在XNA开发一款游戏,我对XNA也很陌生,但我必须从某个地方开始。我的游戏中几乎所有的东西都很完美。这是一款topview赛车游戏。唯一的问题是我想持续奖金,我从地图上拾取的时间持续给定的时间,比如3秒,我知道我需要使用计时器,但我不知道应该如何使用它 这是代码的一部分,当汽车与我地图的一块瓷砖碰撞时,我会使用: if (map[x][y] == 0) { if (speedBonus) { c

我正在XNA开发一款游戏,我对XNA也很陌生,但我必须从某个地方开始。我的游戏中几乎所有的东西都很完美。这是一款topview赛车游戏。唯一的问题是我想持续奖金,我从地图上拾取的时间持续给定的时间,比如3秒,我知道我需要使用计时器,但我不知道应该如何使用它

这是代码的一部分,当汽车与我地图的一块瓷砖碰撞时,我会使用:

 if (map[x][y] == 0)
        {
            if (speedBonus)
            {
                car.speed = 450;
            }
            else
            {
                car.speed = 200;
            }

我希望你们中的一个人能帮我解决这个问题,因为我花了大约2个小时来修复它,但我的代码并没有帮我解决这个问题。提前谢谢

您需要记录领取奖金的时间,您可以将其保存到DateTime对象中。然后,在主循环的每次迭代中,检查时间跨度是否大于3秒。如果是这样,请删除奖金。

您需要记录领取奖金的时间,您可以将其保存到DateTime对象中。然后,在主循环的每次迭代中,检查时间跨度是否大于3秒。如果是这样,请删除奖金。

谢谢您的帮助,我通过以下方式修复了代码:

顶部有两个变量:

float timer = 3;
const float TIMER = 3;
在更新中:

if (map[x][y] == 0)
        {
            if (speedBonus)
            {
                float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
                timer -= elapsed;

                car.speed = 450;

                if (timer <= 0)
                {
                    speedBonus = false;
                    timer = TIMER;   //Reset Timer
                }
            }
            else
            {
                car.speed = 200;
            }
if(map[x][y]==0)
{
if(速度奖金)
{
已用浮点=(浮点)gameTime.ElapsedGameTime.TotalSeconds;
计时器-=已用时间;
车速=450;

如果(timer感谢您的帮助,我用以下方式修复了代码:

顶部有两个变量:

float timer = 3;
const float TIMER = 3;
在更新中:

if (map[x][y] == 0)
        {
            if (speedBonus)
            {
                float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
                timer -= elapsed;

                car.speed = 450;

                if (timer <= 0)
                {
                    speedBonus = false;
                    timer = TIMER;   //Reset Timer
                }
            }
            else
            {
                car.speed = 200;
            }
if(map[x][y]==0)
{
if(速度奖金)
{
已用浮点=(浮点)gameTime.ElapsedGameTime.TotalSeconds;
计时器-=已用时间;
车速=450;
中频(定时器)