0

デルタを取得するタイミング システムを使用しています (各フレームが経過したミリ秒数、60 fps)。

タイミングを使用する前に、フレームを数えて次のようにしました。

if(frames % 60 == 0) /*do something*/;
frames++;

しかし、デルタで同じことを使用することはできません:

if(milliseconds % 1000 == 0) /*do something*/;
milliseconds += delta;

デルタは毎回変化し、ミリ秒は毎秒正確に 1000 の倍数にはなりません。

(私はJavaを使用していますが、それは実際には関係ありません。)

編集:

Stas Makutin の if(milliseconds - prev_milliseconds >= 1000) は、ほとんどの場合機能します。しかし、私のコードの一部には、次のようなものがあります。

if(frames % 60 == 0){ 
  ...
}
if(frames % 60 == 30){
  ...
}

if(frames % 40 == 0){
  ...
}

prev_millisecond1、prev_millisecond2 などを使用せずにこれを行う方法はありますか (つまり、複数の prev_millisecond 変数)。

4

1 に答える 1

0

おそらく、次のようなものが機能します。

prev_milliseconds = 0;

...

if (milliseconds - prev_milliseconds >= 1000) 
{
   /* do somthing */
   prev_milliseconds = milliseconds;
}
milliseconds += delta;

しかし、コードが各フレームの後にまだトリガーされる場合は、フレームのカウントを続けて古いコードを使用しないのはなぜですか?

于 2012-03-23T22:00:03.747 に答える