我正在使用一个计时系统,我得到delta(每帧通过的毫秒数,60 fps)。
在我使用计时之前,我计算了帧并做了类似的事情:
if(frames % 60 == 0) /*do something*/;
frames++;
但我不能对delta使用相同的东西:
if(milliseconds % 1000 == 0) /*do something*/;
milliseconds += delta;
Delta每次都会改变,毫秒不会是每秒1000的倍数。
(我正在使用Java,但这并不相关。)
编辑:
Stas Makutin的if(毫秒 - prev_milliseconds> = 1000)在很大程度上起作用。 但在我的部分代码中,有类似的东西:
if(frames % 60 == 0){
...
}
if(frames % 60 == 30){
...
}
if(frames % 40 == 0){
...
}
有没有办法在不使用prev_millisecond1,prev_millisecond2等的情况下执行此操作(即多个prev_millisecond变量。)
答案 0 :(得分:0)
可能这样的事情会起作用:
prev_milliseconds = 0;
...
if (milliseconds - prev_milliseconds >= 1000)
{
/* do somthing */
prev_milliseconds = milliseconds;
}
milliseconds += delta;
但是如果您的代码在每帧之后仍然触发,为什么不继续计算帧数并使用旧代码?