Unity 物理エンジンの基本的な最適化ガイドライン

物理エンジンのコアコンセプト

RigidBody、剛体、基本的な物理特性、このコンポーネントを使用すると、オブジェクトは質量などの物理特性を持ちます。

平行移動によってオブジェクトの位置を変更する慣性はありません. AddForce が RigidBody に使用された場合にのみ、シミュレーションの実際の物理的効果が得られます.

コライダー、オブジェクト間の衝突プロパティ、またはオブジェクトの表面物理プロパティ。コライダには多くの種類があり、必要に応じて選択する必要がありますが、一般的にはボックス コライダを例として説明します。Collider は、衝突ボリューム、衝突トリガー スイッチ、物理マテリアルなどの属性を持つオブジェクトを提供します。トリガー スイッチがオンになっている場合は、衝突の動作をスクリプトで定義できます。

物理マテリアル、物理マテリアル、これはコライダーに適用される特別なマテリアルで、摩擦、跳ね返りなど、オブジェクトの物理サーフェスに関連する他のプロパティを定義します。物理的なマテリアルが指定されていない場合、オブジェクト間の衝突後に弾むような相互作用は発生しません。

 

 

レイヤーについて:

 レイヤーはコライダーを扱うように設計されたもので、目的は不要な衝突検出を減らすことです。Unity は N*N マトリックスを維持します, ここで, N はレイヤーの数です. このマトリックスを設定することで, 衝突を検出する必要があるレイヤーを指定できます. レイヤーのデフォルトは衝突を検出することです. たとえば、ステージ上のオブジェクトが A と B の 2 つのグループに分割されている場合、A と B の間の衝突を計算する必要がない場合は、マトリックスの位置に対応するチェック ボックスをオフにすると、衝突の検出が行われます。層間を避けることができ、不要な必要な計算を減らすことができます。

光源について:

  1. できるだけ使用しないでください。
  2. 可能な限り光の範囲を減らします。
  3. 更新クラスのイベント関数で光源を使用しないでください。
  4. メッシュ コライダのライティングは、多くの計算を消費します. 良い方法は、オブジェクトがメッシュの形状をシミュレートするプリミティブ コライダを作成することです. メッシュ (メッシュ) コライダを照らす必要がある場合は、メッシュを凸状にするのが最善です. ;
  5. 光が当たる必要があるものを必ず指定し、ライト機能でレイヤーマスクを指定してみてください。ライト関数では、指定するのはレイヤー ID ではなくビットマスクであることに注意してください。たとえば、レイヤー ID が 10 のレイヤーにライトを配置する場合は、10 ではなく 1 << 10 と指定する必要があります。 ; ID 10 以外のすべてのレイヤーにライトを当てたい場合は、~ 記号を使用できます。

定量分析:

システムの負荷は、光源の数と光の距離にほぼ比例します。

プリミティブ コライダーのパフォーマンスは、メッシュ コライダーの 2 倍以上です。

約 2 d と 3 d:

作成するゲームが 2D または 2.5D の場合は、2D テンプレートを使用します。それ以外の場合、3D テンプレートを使用すると負荷が大幅に増加するため、まったく不要です。

剛体について:

リジッドボディは、物理的な相互作用を可能にするコンポーネントです。Rigidbody コンポーネントのないオブジェクトは静的衝突と呼ばれます.静的衝突オブジェクトを移動しようとすると、物理エンジンが物理ワールド全体を再計算する必要があるため、非常に非効率的です. テストによると、静的コライダーを動かす負荷は、移動する剛体の負荷よりもほぼ 2 倍大きいことが示されています。

タイム ステップを調整します。

Timestep は時間管理で調整でき、FixedUpdate() と物理エンジンの更新頻度に直接影響します。適切に調整することで、エクスペリエンスに影響を与えずにタイムステップを増やしてパフォーマンスを向上させることができます。

おすすめ

転載: blog.csdn.net/terminatorsong/article/details/124578956