【发布时间】:2018-11-30 10:13:06
【问题描述】:
我有一个游戏,我希望玩家能够在其上延迟发射激光。该代码有效,但我想知道我这样做是否正确。
我想知道添加延迟的正确方法是什么?
我尝试包含与问题相关的代码。
private double laserDelay;
private TimeSpan laserShootInterval = TimeSpan.FromSeconds(6);
laserDelay = laserShootInterval.TotalSeconds;
if (currentKeyState.IsKeyDown(Keys.Space))
{
if(laserDelay == laserShootInterval.TotalSeconds)
{
Shoot();
laserDelay = laserDelay - laserShootInterval.TotalSeconds;
}
}
UpdateLasers(graphics);
if(laserDelay < laserShootInterval.TotalSeconds)
{
laserDelay++;
}
【问题讨论】:
-
延迟什么?下次触发还是从按下按钮到实际触发?您是基于增量时间还是每秒固定的滴答数?
-
我希望从下一次触发后有一个固定的时间,以便它在所有计算机上运行相同。
-
您使用的是增量时间还是每秒固定的滴答数?
-
没有错,只是该行应该是
laserDelay >= laserShootInterval.TotalSeconds -
补充 @MickyD 所说的,因为您使用的是浮点变量 (
double),所以不要进行直接比较,而是测试它是否高于 [或等于] / 低于 [或等于]或测试该值是否接近目标而不是完全相同(因为它不太可能完全相同)