【发布时间】:2017-08-07 20:05:04
【问题描述】:
我正在用 JavaScript 创建一个增量游戏(比如 CookieClicker,如果你玩过的话)。
以 CookieClicker 为例,您每秒生成一定数量的 cookie。如果您每秒制作 700 个 cookie,则计数器每秒增加 1 个 cookie 700 次(或看起来如此)。
目前在我的游戏中,如果你每秒制作 700 个“cookie”,计数器将每秒增加 700 个“cookie”,而不是平稳地增加一个固定数量。
我不知道如何做到这一点。我创建了一个函数来计算您每秒制作的“cookie”数量,我尝试使用该数字将window.setInterval() 的时间参数设为变量,但我什至不确定这是否可能更不用说实用了.
我很确定这不是正确的方法,但我还是会发布相关代码:
function getManaPerSecond(){
manaPerSecond = earthEssence + (windEssence * 5) + (waterEssence * 10) +
(fireEssence * 150);
};
window.setInterval(function(){
getManaPerSecond();
}, 1000);
window.setInterval(function(){
if(manaPerSecond>0){
incrementalMana++;
document.getElementById('incrementalMana').innerHTML = incrementalMana;
}
}, (1000/manaPerSecond));
【问题讨论】:
-
我以前做过类似的事情,我决定平均每秒应该有 60 帧,所以我每秒更新计数器 60 次。这并不是 100% 正确的,但它会给人一种“流畅”的印象。您可能必须使用双精度数字才能获得所需的结果。根据经验,每秒 60 次大约是每 17 毫秒一次(16.66666...)。你当然必须做
var incrementBy = manaPerSecond / 60; manascore += incrementBy。您不应该添加 1,就像您在这里所做的那样,而是添加 X,即所需的数量。 -
您可以查看
requestAnimationFrame以获得更流畅的动画css-tricks.com/using-requestanimationframe
标签: javascript increment