Version: 2022.3
言語: 日本語
Physics
Player 設定

Physics 2D

Physics 2D のグローバル設定を管理するには、Edit > Project Settings… > Physics 2D の順に進みます。

ノート: 3D 物理演算のグローバル設定を管理するには、代わりに Physics プロジェクト設定 ドキュメントを参照してください。

Physics 2D Inspector の設定
Physics 2D Inspector の設定

Physics 2D の設定では、物理シミュレーションの精度の制限を定義します。より正確なシミュレーションを行うためには、処理のオーバーヘッドが増えます。そのため、これらの設定を使用すると、プロジェクトに適した精度とパフォーマンスのバランスを設定することができます。詳細は、Physics ページを参照してください。

General Settings タブ

以下は、Physics 2D マネージャーウィンドウの General Settings タブで利用可能なプロパティです。

プロパティ 機能
Gravity すべての Rigidbody 2D ゲームオブジェクトに適用される重力の大きさを設定します。一般的に、Y 軸の負の方向にのみ重力を設定します。
Default Material 個々の 2D コライダーに割り当てられていない場合に使用する Physics Material 2D への参照を設定します。
Velocity Iterations 物理エンジンによる反復回数を設定し、速度エフェクトを解決します。数値が高いほど物理演算はより正確になりますが、CPU 時間を犠牲にします。
Position Iterations 物理エンジンによる反復回数を設定し、位置の変化を解決します。数値が高いほど物理演算はより正確になりますが、CPU 時間を犠牲にします。
Velocity Threshold 弾性衝突のしきい値を設定します。 Unity は、相対速度がこの値より低い衝突を非弾性的な衝突 (衝突するゲームオブジェクトが互いにバウンスしない衝突) として扱います。
Max Linear Correction 制約を解くときに使用する最大のリニア位置補正を設定します (0.0001 から 1000000 の範囲)。これにより、オーバーシュートを防ぐことができます。
Max Angular Correction 制約を解くときに使用する最大角度補正を設定します(0.0001 から 1000000 の範囲)。これにより、オーバーシュートを防ぐことができます。
Max Translation Speed 物理演算の更新中に Rigidbody 2D ゲームオブジェクトの最大直線速度を設定します。
Max Rotation Speed 物理演算の更新中に Rigidbody 2D ゲームオブジェクトの最大回転速度を設定します。
Baumgarte Scale Unity が衝突の重複を解決する速さを決定するスケール係数を設定します。
Baumgarte Time of Impact Scale Unity が衝突時間の重複をどのくらい早く解決するかを決定するスケール係数を設定します。
Time to Sleep Rigidbody 2D の動きが止まってから、スリープ状態になるまでに経過する時間 (秒単位) を設定します。
Linear Sleep Tolerance Time to Sleep 経過後に Rigidbody 2D がスリープ状態になる直線速度を設定します。
Angular Sleep Tolerance Time to Sleep 経過後に Rigidbody 2D がスリープ状態になる回転速度を設定します。
Default Contact Offset コライダーが実際に接触していない場合でも、接触しているとみなされるコライダーの近接距離の値を設定します。contactOffset 値の合計よりも距離が短いコライダーは接触したとみなされます。これにより、衝突検知システムは、オブジェクトがわずかに離れていても接触制約を予測的に強制することができます。注意: この値をあまり小さくすると、連続ポリゴン衝突を計算する Unity の能力が損なわれる可能性があります。逆に、値をあまり大きくすると、頂点衝突のアーティファクトが発生する可能性があります。
Simulation Mode Unity が 2D 物理シミュレーションを実行するタイミングを、ドロップダウンメニューから選択します。
Fixed Update MonoBehaviour.FixedUpdate が呼び出された直後に、Unity が物理シミュレーションを実行する場合は、これを選択します。
Update MonoBehaviour.Update が呼び出された直後に Unity が物理シミュレーションを実行する場合は、これを選択します。
Script Physics2D.Simulate を使って物理シミュレーションを手動で実行する場合は、これを選択します。
Queries Hit Triggers このオプションを有効にすると、Triggers として設定した Collider 2D が、物理クエリ (Linecast や Raycast など) と交差したときにヒットを返すようにします。デフォルトで有効になっています。
Queries Start In Colliders このオプションを有効にすると、物理クエリを Collider 2D 内で開始しコライダーを検出します。
Callbacks On Disable このオプションを有効にすると、コライダーがコンタクトを無効にしたときにコリジョンコールバックを送信します。
Reuse Collision Callbacks この設定を有効にすると、物理エンジンは 1 つの Collision2D インスタンスをすべてのコリジョンコールバックに再利用します。無効にすると、物理エンジンはコリジョンコールバックごとに新しい Collision2D インスタンスを作成します。
Auto Sync Transforms このオプションを有効にすると、Transform の変更を物理システムと自動的に同期させます。
Gizmos エディター内で描画する Physics 2D ギズモのタイプを選択します。複数のオプションを選択することができます。
Nothing これを選択すると、すべてのオプションの選択が解除されます。Physics 2D ギズモは描画されません。
Everything これを選択すると、すべてのオプションが選択されます。
All Devices これを選択すると、Hierarchy ウィンドウでコライダーを選択しなくても、すべてのコライダーを描画されます。
Colliders Outlined これを選択すると、コライダーをアウトライン付きで描きます (アウトラインの色は 2D Physics Preferences でカスタマイズできます)。
Colliders Filled これを選択すると、すべてのコライダーが 2D Physics Preferences で指定された塗りつぶし色を使って描画されます。
Colliders Sleeping これを選択すると、コライダーが接続されている Rigidbody 2D がスリープ状態にあるときに、2D Physics 環境設定 で指定した Awake または Asleep の色を使用して、コライダーが描画されます。
Collider Contacts これを選択すると、コライダー接触が接触点から接触法線の方向に向かう方向矢印として表示されます。矢印の接触色は、2D Physics Preferences で指定できます。
Collider Bounds これを選択すると、コライダー が作成するすべての PhysicsShape2D に対してコライダー の境界が描画されます。境界は軸平行バウンディングボックス (AABB) です。
Multithreading これを展開してマルチスレッド設定を調整します。各プロパティの詳細については、マルチスレッド を参照してください。

Multithreading

Multithreading セクションの設定で C# Job System を使用してマルチスレッド物理演算を設定できます。

マルチスレッド設定が展開されました。
マルチスレッド設定が展開されました。
プロパティ 機能
Use Multithreading このオプションを有効にすると、ジョブシステムを使用してシミュレーションステップを実行し、残りのオプションを使用して制御できます。
Use Consistency Sorting 一貫性のある処理順を維持することがシミュレーションにとって重要になる場合は、このオプションを有効にします。
複数の CPU スレッドでシミュレーションステップを実行すると、別々のバッチデータが生成されます。これらの別々のバッチを処理することで、より高速な結果が得られますが、処理順序の決定性は低下します。
Interpolation Poses Per Job 各シミュレーションジョブで補間される Rigidbody 2D オブジェクトの最小数を設定します。
New Contacts Per Job 各シミュレーションジョブで検索する新しい接触の最小数を設定します。
Collide Contacts Per Job 各シミュレーションジョブで衝突させる接触の最小数を設定します。
Clear Flags Per Job 各シミュレーションジョブでクリアするフラグの最小数を設定します。
Clear Body Forces Per Job 各シミュレーションジョブでクリアするボディの最小数を設定します。
Sync Discrete Fixtures Per Job 各シミュレーションジョブでの非連続的なアイランドの解決中に、ブロードフェーズで同期するフィクスチャの最小数を設定します。
Sync Continuous Fixtures Per Job 各シミュレーションジョブでの連続的なアイランドの解決中に、ブロードフェーズで同期するフィクスチャの最小数を制御します。
Find Nearest Contacts Per Job 各シミュレーションジョブで検索する最も距離が近い接触の最小数を設定します。
Update Trigger Contacts per Job 各シミュレーションジョブで更新するトリガーの接触の最小数を設定します。
Island Solver Cost Threshold 非連続的なアイランドの解決の間の、1 つのアイランドでの、すべての物体、接触、およびジョイントのコストの最小しきい値。
Island Solver Body Cost Scale 非連続的なアイランドの解決の間の、各ボディのコストスケールを設定します。
Island Solver Contact Cost Scale 非連続的なアイランドの解決の間の、各接触のコストスケールを設定します。
Island Solver Joint Cost Scale 非連続的なアイランドの解決の間の、各ジョイントのコストスケールを設定します。
Island Solver Bodies Per Job アイランドの解決を行う場合に、各シミュレーションジョブで解決するボディの最小数を設定します。
Island Solver Contacts Per Job アイランドの解決を行う場合に、各シミュレーションジョブで解決する接触の最小数を設定します。

Layer Collision Matrix タブ

Layer Collision Matrix タブの設定は、ゲームオブジェクトに割り当てられているレイヤーに基づいて、異なる Rigidbody 2D にアタッチされているコライダー同士を接触させるかどうかを制御します。マトリクスは各レイヤーと他のレイヤーを表示し、どのレイヤー同士を接触できるようにするかを選択できます。

Layer Collision Matrix タブ。
Layer Collision Matrix タブ。

2 つのレイヤーの交点にあるチェックマークは、その 2 つのレイヤー間の接触が許可されていることを示し、チェックボックスがクリアされている場合は、その 2 つのレイヤー間の接触が許可されていないことを示します。レイヤーの名前やチェックボックスの上にカーソルを置くと、そのレイヤーの行と列がハイライトされ、どのレイヤーに影響するかがわかりやすくなります。

ヒント: 最高のパフォーマンスを実現するために、他のレイヤーと接触させたい特定のレイヤーのみを選択し、他の不要な接触をすべて無効にします。そうすることで、最小限の接触の可能性のみが選択されるようにする必要があります。 これを支援するために、Disable All (すべて無効) または Enable All (すべて有効) を選択して、すべてのオプションを一度に素早く選択または選択解除し、それから、特定のレイヤーを選択することができます。

その他の参考資料

Physics2DManager

Physics
Player 設定