c# - 如何在c#中延迟某些东西
问题描述
我正在开发一款玩家可以投掷炸弹的游戏。我希望炸弹在爆炸前闪烁一秒钟,以便玩家有时间逃跑。我找到的唯一解决方案是“睡眠”,但是当线程暂停时玩家无法移动,所以这不起作用。打开一个新线程并使用睡眠会很愚蠢吗?可能有多个炸弹同时爆炸的实例。我也会使用这种方法来逐渐增加炸弹爆炸时的命中范围。如果相关的话,我正在开发单人游戏。
解决方案
我认为您在这里使用了错误的模式。
- 您不想“等待”炸弹爆炸。
- 你需要的是让炸弹在给定的时间爆炸。
因此,在您的游戏逻辑中,当您迭代活动游戏对象的状态时,您需要检查它产生的时间和当前时间之间的时间,然后在熔断时间已过时爆炸:
If (Now() - SpawnTime >= Fusetime) { Boom(); }
你现在甚至可以有更多的逻辑。eg:如果剩余时间小于1s,使炸弹闪烁/哔/摇。或者任何你想要的。
else If (Now() - SpawnTime >= (Fusetime - 1)) { Beep(); }
推荐阅读
- css - flexbox 拒绝按照我的意图证明内容的合理性
- javascript - 创建一个独特组合的数组
- mongodb - 从 linux 连接 mongo 数据库副本集的问题,单实例运行正常。使用 .net 核心 mongo 驱动程序
- php - 支付 WooCommerce 订单时如何重新保存可变产品的所有变体?
- ios - TPPDF ios中每一页的页脚
- server - 如何在 HAproxy 中设置自定义数量的备份后端服务器?
- javascript - 如何将照片注入 Gatsby 网站?
- sql - 案例表达式给出“日期数据类型到日期时间数据类型的转换导致超出范围的值”。
- javascript - 在 JavaScript 中合并两个多维数组的口袋
- javascript - Pdftron Webviewer 自定义表单域