首页 > 解决方案 > 如何在c#中延迟某些东西

问题描述

我正在开发一款玩家可以投掷炸弹的游戏。我希望炸弹在爆炸前闪烁一秒钟,以便玩家有时间逃跑。我找到的唯一解决方案是“睡眠”,但是当线程暂停时玩家无法移动,所以这不起作用。打开一个新线程并使用睡眠会很愚蠢吗?可能有多个炸弹同时爆炸的实例。我也会使用这种方法来逐渐增加炸弹爆炸时的命中范围。如果相关的话,我正在开发单人游戏。

标签: c#monogame

解决方案


我认为您在这里使用了错误的模式。

  • 您不想“等待”炸弹爆炸。
  • 你需要的是让炸弹在给定的时间爆炸。

因此,在您的游戏逻辑中,当您迭代活动游戏对象的状态时,您需要检查它产生的时间和当前时间之间的时间,然后在熔断时间已过时爆炸:

If (Now() - SpawnTime >= Fusetime) { Boom(); }

你现在甚至可以有更多的逻辑。eg:如果剩余时间小于1s,使炸弹闪烁/哔/摇。或者任何你想要的。

else If (Now() - SpawnTime >= (Fusetime - 1)) { Beep(); }

推荐阅读