マテリアル
概要
すべての PhysicsBody には PhysicsMaterial(Quantum データアセット)が必要です。PhysicsMaterialには、物理エンジンが衝突、力と速度の統合を解決するために必要なプロパティがあります。
PhysicsMaterial データアセット
PhysicsMaterialには、次のパラメータがあります。
- 反発(「弾力」または「バウンス」と呼ばれることもあります)
- 反発の結合関数
- 摩擦 静的
- 摩擦 動的
- 摩擦の結合関数
スロットに PhysicsMaterial アセットがない場合は、デフォルトの物理マテリアルが割り当てられます。デフォルトの物理マテリアルは、SimulationConfig 物理設定でリンクされているものです。
PhysicsMaterial アセットは PhysicsCollider に直接割り当てることができます:
C#
var material = f.FindAsset<PhysicsMaterial>("steel");
collider.Material = material;
f.Set(entity, collider);
重要な注意点
PhysicsMaterial はデータアセットであり、Quantum Asset Databaseにあります。アセットはロールバック可能なゲーム状態の一部ではないため、すべての PhysicsMaterial は実行時に不変であると見なされます。ゲームの実行中にそのプロパティを変更すると、非決定的な動作になります。
PhysicsMaterial は、他のデータアセットと同じルールに従います。
C#
// this is NOT safe and cannot be rolled-back:
collider->Material.Restitution = FP._0;
// switching a reference is safe and can be rolled back:
var newMaterial = f.FindAsset<PhysicsMaterial>("ice");
collider->Material = newMaterial;
Combine Function
各衝突多様体(衝突ペア)の反発力と摩擦を解決するために使用されるCombine Function(結合関数)は、結合関数の優先順位に基づいています。物理システムは、2つのコライダーの最も優先順位の高い関数を選択します。
優先順位は次のとおりです。
- Max
- Min
- Average
- Multiply
たとえば、コライダーAとコライダーBを備えた衝突多様体があるとします。コライダーAの物理マテリアルは Restitution Combine Function(反発結合関数) が__Max__に設定されていますが、コライダーBの物理マテリアルは__Average__に設定されています。Max は Average よりも優先度が高いため、この衝突の回復は Max 関数を使用して解決されます。
同じロジックが Friction Combine Function(摩擦結合関数) にも適用されます。
N.B.: Friction Combine Function と Restitution Combine Function は別々に解決されるため、設定が異なります。
Back to top