2014-10-09 79 views
0

我正在尝试使用XNA库进行游戏。我想让一个精灵们投掷一个火球来击落小行星。但我在按下具体的关键时遇到了问题:例如,我想在投掷之间掷出一秒火球。XNA游戏:计算两次拍摄之间的时间

我想测量创建实例之间的时间差。我怎样才能做到这一点?

回答

2

UYou可以使用gameTime变量传递给Update方法这样的ElapsedGameTime属性:

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 2014-10-28 02:34:00

0

您主Game类别的任何Update或任何GameComponent的每次呼叫都会收到GameTime的实例作为参数。它的财产ElapsedGameTime可以用来积累时间的流逝。