我正在构建小型多人游戏,并且我很难掌握setInterval
配置。让我们说,我想给予玩家在冷却时间内运行的能力,或者在实际时间间隔内产生某些物体(比如每5秒或有2秒冷却)。问题是我无法将服务器setInterval
循环与实时概念同步。
例如我有这个循环运行冷却时间:
setInterval(function() {
game.mechanics.buffered.cooldowns.run();
}, 10);
我注意到如果我降低此10
值,冷却时间会更快,如果我将其设置为更高的数字,它们会运行得更慢,但我不知道如何实时同步。我甚至不知道首先应该在服务器循环中放置什么值,到目前为止我对10ms
感到满意,但实际冷却时间目前还不适用。
逻辑点setTimeout
是更适合产卵的解决方案,但setInterval
使我有可能提供进度条而setTimeout
没有。
问题是,如何正确配置此循环以便我可以在冷却对象中说它持续2秒并且将在这2秒后执行。
答案 0 :(得分:0)
这不是完美的解决方案,但它可以让你开始。
var last = 0,
current = 0,
tick = 10,
seconds = 3;
setInterval(function() {
current += tick;
if(current - last >= seconds * 1000) {
last = current;
console.log(new Date().getSeconds());
}
}, tick);