ドキュメント

Unity Engine

Unity Engine

Physics 2D リファレンス

Learn about Physics 2D settings.
読み終わるまでの所要時間 21 分最終更新 1ヶ月前

以下のプロジェクト設定は、Physics 2D のグローバル設定を管理し、Unity の物理演算システムによる 2D ゲームオブジェクトの物理演算シミュレーション精度の制限を定義します。より正確なシミュレーションを行うには、より多くの処理オーバーヘッドが必要です。これらの設定により、プロジェクトに最適化するよう精度とパフォーマンスのトレードオフを調整できます。
Physics 2D のグローバルプロジェクト設定を管理するには、Edit > Project Settings… > Physics 2D の順に移動し、Physics 2D プロジェクト設定ウィンドウを開きます。
注意3D 物理演算のグローバル設定を管理するには、物理演算 プロジェクト設定リファレンスページを参照してください。

Physics 2D Inspector 設定

General Settings タブ

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

プロパティ

機能

Gravityすべての Rigidbody 2D ゲームオブジェクトに適用される重力の大きさを設定します。一般的に、Y 軸の負の方向にのみ重力を設定します。
Default Material個々の Collider 2D に何も割り当てられてない場合に使用する Physics Material 2D への参照を設定します。
Velocity Iterations物理演算システムが速度効果を解決するために行うイテレーション回数を設定します。数値が高いほど物理演算はより正確になりますが、より多くの CPU 時間が必要になります。
Position Iterations物理演算システムが位置の変更を解決するために行うイテレーション回数を設定します。数値が高いほど物理演算はより正確になりますが、より多くの CPU 時間が必要になります。
Bounce Threshold弾性衝突のしきい値を設定します。このしきい値を下回る相対直線速度の衝突は、弾性がないものとして処理されるため、バウンスしません。
Max Linear Correction制約を解決するときに使用する最大直線位置補正を設定します (0.0001 から 1000000 の範囲)。これにより、オーバーシュートを防ぐことができます。
Max Angular Correction制約を解決するときに使用する最大角度補正を設定します (0.0001 から 1000000 の範囲)。これにより、オーバーシュートを防ぐことができます。
Max Translation Speed物理演算の更新中に Rigidbody 2D ゲームオブジェクトの最大直線速度を設定します。
Max Rotation Speed物理演算の更新中に Rigidbody 2D ゲームオブジェクトの最大回転速度を設定します。
Baumgarte ScaleUnity が衝突の重複を解決する速さを決定するスケール係数を設定します。
Baumgarte Time of Impact ScaleUnity が衝突時間の重複をどのくらい早く解決するかを決定するスケール係数を設定します。
Time to SleepRigidbody 2D の動きが止まってから、スリープ状態になるまでの経過時間 (秒単位) を設定します。
Linear Sleep ToleranceTime to Sleep 経過後に Rigidbody 2D がスリープ状態になる直線速度を設定します。
Angular Sleep ToleranceTime to Sleep 経過後に Rigidbody 2D がスリープ状態になる回転速度を設定します。
Default Contact Offsetコライダーが実際に接触していない場合であっても、接触しているとみなされるコライダーの近接距離の値を設定します。
contactOffset
値の合計よりも近い距離にあるコライダーは接触点を生成するため、オブジェクトが少し離れている場合でも、衝突判定システムが先を見越して接触制限を課します。**注意:**この値を小さくし過ぎると、連続的なポリゴン衝突の計算力が低下する可能性があります。反対に、値を大きくし過ぎると、頂点衝突のアーティファクトが発生する可能性があります。
Simulation ModeUnity が 2D 物理演算シミュレーションを実行するタイミングを選択します。
Fixed Update選択すると、MonoBehaviour.FixedUpdate が呼び出された直後に物理演算シミュレーションを実行します。
Update選択すると、MonoBehaviour.Update が呼び出された直後に物理演算シミュレーションを実行します。
選択時に 追加のプロパティ が表示されます。
スクリプトPhysics2D.Simulate を使用して物理演算シミュレーションを手動で実行する場合に選択します。
Simulation LayersSimulation Mode が FixedUpdate または Update に設定されている場合にシミュレーションする レイヤー を選択します。
デフォルトでは Everything オプションが選択されており、すべてのレイヤー が自動的に選択され、物理演算シミュレーションに加えられます。シミュレーションに含める特定のレイヤーを選択できます。選択したレイヤーの Rigidbody2D、ジョイント、エフェクター、Collider2D 間の接触のみをシミュレートします。
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 の変更を物理システムと自動的に同期させます。
Gizmoエディター内に描画する 2D 物理演算ギズモの種類を選択します。複数のオプションを選択できます。
Nothingこれを選択すると、すべてのオプションの選択が解除されます。2D 物理演算ギズモは描画されません 。
Everything選択すると、すべてのオプションが選択されます。
All Colliders選択すると、Hierarchy ウィンドウで選択しなくても、すべてのコライダーが描画されます。
Colliders Outlined選択すると、コライダーがアウトラインを使用して描画されます (アウトラインの色は 2D Physics Preferences で設定可能)。
Colliders Filled選択すると、すべてのコライダーが 2D Physics Preferences 設定で指定された塗りつぶし色を使用して描画されます。
Colliders Sleeping選択すると、2D Physics Preferences で指定した Awake または Asleep の色を使用してコライダーを描画し、アタッチされている Rigidbody 2D のスリープ状態を示します。
Collider Contacts選択すると、接触点から開始して接触法線方向に向かう矢印としてコライダー接触が表示されます。2D Physics Preferences で接触を表す矢印の色を指定できます。
Collider Bounds選択すると、コライダーが作成するすべての PhysicsShape2D にコライダー境界を描画します。境界は AABB (axis-aligned bounding box、軸平行バウンディングボックス) です。
Multithreadingマルチスレッド設定を調整するにはこれを展開します。各プロパティについては、Multithreading を参照してください。

Simulation Mode: Update

以下のプロパティは、Simulation Mode で Update または Script を選択した場合にのみ表示されます。

プロパティ

機能

Use Sub Steppingこのプロパティを有効にすると、エディターはシミュレーションステップでシミュレーションサブステップを使用します。
Use Sub Step Countこのプロパティを有効にすると、すべてのシミュレーションサブステップの接触が計算されます。各サブステップのシミュレーションはより正確になりますが、パフォーマンスが低下します。このプロパティを無効にすると、最初のシミュレーションサブステップの接触のみを計算します。
Max Sub Step Countシミュレーションサブステップが有効でアクティブに実行されている場合に、フレームごとに許可されるシミュレーションサブステップの最大数を設定します。これにより、エディターがサブステップに費やす時間も制限されます。
Min Sub Step FPSエディターがサブステップの使用を開始する前に、シミュレーションステップに許可する最小フレーム/秒を設定します。Use Sub Stepping が有効で、現在のフレームレートがこの値より低い場合、エディターはシミュレーションサブステップを使用します。

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 にアタッチされている) が互いに接触できるかどうかをコントロールします。このマトリックスには、各レイヤーに対して他のすべてのレイヤーが表示されており、どのレイヤーが他のレイヤーと接触できるかを選択できます。

The Layer Collision Matrix タブ

2 つのレイヤー間の交点にあるチェックマークは、その 2 つのレイヤー間の接触が許可されていることを示します。チェックボックスをオフにすると、その 2 つのレイヤー間の接触は許可されません。レイヤー名またはチェックボックスにカーソルを合わせると、その行と列が強調表示され、どのレイヤーに影響するか見やすくなります。
ヒント:最適化によりパフォーマンスを最大限に向上するには、他と接触させたい特定のレイヤーだけを選択し、その他すべての不要な接触を無効にして、最小限の接触しか選択しないようにする必要があります。これを行いやすいように Disable All または Enable All を選択して、すべてのオプションを一度に素早く選択または選択解除してから特定のレイヤーを選択します。

追加リソース