2014-10-09 3 views
0

Я пытаюсь создать игру с библиотекой XNA. Я хочу, чтобы спрайт бросил огненный шар, чтобы поразить падающие астероиды. Но у меня есть проблема с нажатием конкретного ключа: я хочу бросить огненные шары, например, за одну секунду между бросками.XNA game: рассчитать время между двумя побегами

Я хочу измерить разницу во времени между созданием экземпляров. Как я могу это сделать?

ответ

2

UYou может использовать ElapsedGameTime свойство gameTime переменной передается методу Update как это:

const float shootTimer = 1.0f; 
float elapsedTime = 0f; 

protected override void Update(GameTime gameTime) 
{ 
    // Allows the game to exit 
    if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) 
     this.Exit(); 

    elapsedTime += gameTime.ElapsedGameTime.TotalSeconds; 

    if(elapsedTime >= shootTimer && /* Your logic to see if you should shoot a fireball */) 
    { 
     // Shoot the fireball! 
     elapsedTime = 0f; 
    } 

    base.Update(gameTime); 
} 

В принципе, то, что вы делаете в коде выше устанавливает минимальное значение (в секундах), необходимо проходят между каждым выстрелом. Затем вы создаете переменную, которая будет хранить количество времени, которое прошло между каждым выстрелом.

В методе Update вы добавляете время между каждым вызовом Update, а затем проверяете, больше ли он таймера, и если да, то вы снимаете и перезапускаете прошедшее время.

Примечание: Я написал эту часть кода из головы, поэтому у нее может быть небольшая проблема.

+0

Спасибо за ответы! Оно работает! :) – Gerixxx

0

Каждый вызов Update вашего основного Game класса или любого GameComponent получает экземпляр GameTime в качестве аргумента. Свойство ElapsedGameTime можно использовать для накопления времени.

Смежные вопросы