2

NDK で Box2d 物理エンジンを使用して、Android でゲームを作成しています。つまり、物理は完全にネイティブの世界にありますが、描画はまだ Java の世界にあります。

私のゲームには、物理​​世界をステップアップし、キャンバスの再描画を無効にする更新スレッドがあります。ここまでは順調ですね。ユーザーがゲームを一時停止したい場合は、すべてのスレッドを停止します。次に、ユーザーにはゲームを「再開」するオプションが与えられます。これにより、スレッドが再開され、ゲームは停止した場所から開始されます。

何らかの理由で、ゲームが再開されると、物理演算のボディの動きが速くなります。時間ステップを停止して再開すると、ボディに何か変化が生じるのはなぜですか?

一時停止した後に再度 step() を呼び出すことに問題はありますか? 短い一時停止の後、物体の速度、質量、摩擦、密度が変化します。

どんな助けでも大歓迎ですありがとう

4

1 に答える 1

1

この質問は古いものですが、解決していない場合に備えて、いくつか考えてみてください。

  • step() に定数値を渡していますか? 経過したリアルタイムの量に基づいてその値を計算している場合、それが問題になる可能性があります。
  • 単一のスレッドしか作成していませんか? 再開するときに、古いスレッドを再開して誤って別のスレッドを作成すると、2 倍の更新が得られる可能性があります。
  • フレームレートをリアルタイムにロックするにはどうすればよいですか? その計算を新しい時間に更新していない可能性はありますか? 同様に、少なくとも 1/60 秒が経過したことを確認する「最終更新」がある場合、再開時に「最終更新」の値をリセットしないと、すべての更新が成功します。その時間が経過したかどうか。
于 2011-06-23T19:20:26.610 に答える