2017-01-02 10 views
1

私はユニティでマシン学習シミュレーションをやっています。すべての物理イベントはFixedUpdate()で発生しますので、フレームレートの変動は結果の周期に影響しません(毎回正確にタイムスケールを設定しています)。これは、フレームレートが実際に低いとき、たとえば1-5fpsの場合に適用されますか? 1以上のフレームレートを維持できる限り、正しい物理ステップ数が呼び出されることを保証できますか?非常に低いフレームでユニティシミュレーションを実行する

ありがとうございました

答えて

1

動作させるために1のフレームレートを設定する必要はありません。フィジックスループとディスプレイループ(FixedUpdate()Update())は互いに独立しています。 1 FPS以下のフレームレートを持っていても、物理アップデートが正しく適用されるはずです。次の表示フレームをレンダリングする前に、複数の物理ステップを「追いつく」だけです。物事の注文の詳細については、this article from the unity documentationを参照してください。

image

+0

だから私は決して物理学のステップを失うことはありませんか?たとえば、タイムスケールが高く設定されているため、コンピュータのパフォーマンスが要因になります。つまり、物理ステップに割り当てられた時間ではすべての計算を実行できません。 – Amposter

+0

物理更新ループ外の 'RigidBody'の位置を変更しない限り、決して物理的フレームを失うことはありません。 'RigidBody'を使ってゲームオブジェクトの位置を変更すると、不正確な物理計算が行われる可能性があります。 [Time Manager](https://docs.unity3d.com/Manual/class-TimeManager.html)の「Maximum Allowed Timestep」の値を増やすことで、物理学者がコードを追いつくか、書き直す時間を増やすことができます更新フレーム中に 'RigidBody'オブジェクトを移動してください... –

+0

**重要な注意** **移動を引き起こす' Update() '呼び出しである必要はありません。' RigidBody'と親にアニメーションがあり、アニメーションの更新中に 'RigidBody'を動かすことができます。 –

関連する問題