現実世界の物理学では、摩擦とは、互いに接触している 2 つの表面間の動きを妨げる力を意味します。例えば、氷の表面は摩擦が小さいので、オブジェクトはその表面上で滑りやすくなります。ゴムの表面は摩擦が大きいので、オブジェクトはその表面上で滑りにくくなります。
PhysX システムでは、以下の 2 種類の摩擦を制御できます。
静的摩擦 は、コライダーが静止しているときに適用されます。静的摩擦が大きくなると、コライダーが他のコライダーと接触している間に動き始めるのを妨げます。動的摩擦 は、コライダーが移動しているときに適用されます。動的摩擦が大きくなると、コライダーが他のコライダーと接触している間、その移動スピードが妨げられます。
オブジェクトをスタックする必要がある場合の物理演算シミュレーションでは、特に静的摩擦が重要です。例えば、摩擦が小さい 1 つのオブジェクトを別のオブジェクトの上に置く場合 (氷のキューブを別の氷のキューブの上に置くなど)、オブジェクト間の摩擦が小さいため、下のオブジェクトが静止状態であっても上のオブジェクトが動く可能性があります。
PhysX では、単一の点よりも広い接触面 (互いに重なっている 2 つのボックスなど) は、複数の接触点を持つものとして計算されます。その分、摩擦力が大きくなります。このような場合は、摩擦係数の値を調整して結果を正しくスケールする必要があります。例えば、接触点が 2 か所ある場合は、摩擦係数の値を半分にします。
Unity のデフォルトの摩擦係数は 0.6 です。この値は、ほとんどのプロジェクトで現実世界の摩擦をシミュレートします。
コライダー間の摩擦をシミュレートする際、PhysX が使用する計算の種類を選択できます。これを選択するには、物理演算の設定 (Edit > Project Settings > Physics) にアクセスし、Friction Type プロパティを使用します。各摩擦の詳細については、物理演算の設定 に関するドキュメントを参照してください。
摩擦の種類は、常に精度とパフォーマンスのバランスによって選択されます。精度を上げれば、必ず処理時間が長くなります。極めて精度の高い摩擦係数を必要とするプロジェクトもあれば、パフォーマンスの最適化のほうが重視されるプロジェクトもあります。プロジェクトの重点に最も適した摩擦の種類を選択してください。デフォルトの摩擦タイプは Patch Friction です。