我正在尝试使用XNA库进行游戏。我想让一个精灵们投掷一个火球来击落小行星。但我在按下具体的关键时遇到了问题:例如,我想在投掷之间掷出一秒火球。XNA游戏:计算两次拍摄之间的时间
我想测量创建实例之间的时间差。我怎样才能做到这一点?
我正在尝试使用XNA库进行游戏。我想让一个精灵们投掷一个火球来击落小行星。但我在按下具体的关键时遇到了问题:例如,我想在投掷之间掷出一秒火球。XNA游戏:计算两次拍摄之间的时间
我想测量创建实例之间的时间差。我怎样才能做到这一点?
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
调用之间添加时间,然后检查它是否大于定时器,如果是,则您拍摄并重置已用时间。
注意:我写了一段代码,因为它可能有一些小问题。
您主Game
类别的任何Update
或任何GameComponent
的每次呼叫都会收到GameTime
的实例作为参数。它的财产ElapsedGameTime
可以用来积累时间的流逝。
感谢您的回答!有用! :) – Gerixxx 2014-10-28 02:34:00