我试图用XNA库制作游戏。我想要一个精灵投掷火球击中坠落的小行星。但是我按下具体键有一个问题:例如,我想抛出火球,投掷之间只有一秒钟。
我想测量创建实例之间的时差。我怎么能这样做?
答案 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
可用于累积时间的流逝。