XNA游戏:计算两次射击之间的时间

时间:2014-10-09 02:24:18

标签: time xna

我试图用XNA库制作游戏。我想要一个精灵投掷火球击中坠落的小行星。但是我按下具体键有一个问题:例如,我想抛出火球,投掷之间只有一秒钟。

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

2 个答案:

答案 0 :(得分:2)

您可以使用传递给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通话之间添加时间,然后检查它是否大于计时器,如果是,则拍摄并重置已用时间。< / p>

注意:我写了这段代码,这可能会有一些小问题。

答案 1 :(得分:0)

对主Update课程的Game或任何GameComponent的每次调用都会收到GameTime的实例作为参数。其属性ElapsedGameTime可用于累积时间的流逝。