我目前正在开发Monogame的二维太空射击游戏。在我的游戏中,我使用秒表来管理诸如玩家船的射击延迟和各种敌舰攻击等事件之间的延迟。
例如,当用户按空格键时,我调用以下方法:
if (currentKeyboardState.IsKeyDown(Keys.Space))
{
if (Logic.PlayerShotDelay.ElapsedMilliseconds > Projectile.shotdelay)
{
// Fire player shot code
Logic.PlayerShotDelay.Restart();
}
}
上面的代码完美无缺,没问题。但是我尝试在另一种方法中使用相同的技术:
if (currentanimation.frame < 13)
{
if (Logic.FrameDelay.ElapsedMilliseconds > Logic.FrameDelay)
{
currentanimation.Draw(spriteBatch);
currentanimation.frame++;
Logic.FrameDelay.Restart();
}
}
我收到以下错误:
错误1运营商'&gt;'不能应用于'long'和'System.Diagnostics.Stopwatch'
类型的操作数Projectile.shotdelay和Logic.FrameDelay都是静态整数。据我所知,我的if语句在功能上是相同的。我完全不知道为什么这不起作用。在搜索时,我得到了与不可为空的整数有关的结果,但我不能将解决方案应用于我的特定问题。任何帮助将非常感激。
非常感谢!
答案 0 :(得分:1)
在同一行中,您将FrameDelay视为一个类并将其视为“int”
Logic.FrameDelay
。ElapsedMilliseconds&gt; Logic.FrameDelay