Снаряд задержка стрельбы в игре c # - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть игра, в которой я хочу, чтобы игрок мог стрелять лазером с задержкой.Код работает, но мне интересно, правильно ли я поступаю в этом направлении.

Мне было интересно, как правильно добавить задержку?

Я попытался включить кодотношение к вопросу.

private double laserDelay;
private TimeSpan laserShootInterval = TimeSpan.FromSeconds(6);
laserDelay = laserShootInterval.TotalSeconds;

if (currentKeyState.IsKeyDown(Keys.Space))
{
    if(laserDelay == laserShootInterval.TotalSeconds)
    { 
          Shoot();
          laserDelay = laserDelay - laserShootInterval.TotalSeconds;
    }

}

UpdateLasers(graphics);


if(laserDelay < laserShootInterval.TotalSeconds)
{
      laserDelay++;
}

1 Ответ

0 голосов
/ 30 ноября 2018

Предполагая, что вы не используете дельта-время (фиксированное количество тиков в секунду), я бы сделал это так:

int delay = 6 * ticksPerSecond; // ticks to delay for
int cooldown = 0;

public void loop()
{

    if (currentKeyState.IsKeyDown(Keys.Space))
    {
        if(cooldown <= 0)
        { 
              Shoot();
              cooldown = delay
        }

    }

    UpdateLasers(graphics);


    if(cooldown > 0){
          cooldown -= 1;
    }
}
...