マテリアル
概要
すべての 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アセットデータベースに存在します。アセットはロールバック可能なゲーム状態の一部ではないため、すべての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;
結合関数
各衝突マニホールド(衝突ペア)の反発係数と摩擦を解決するために使用される結合関数は、結合関数の優先順位に基づいています。物理システムは、2つのコライダーから最高の優先度を持つ関数を選択します。優先順位は次のとおりです:
- 最大(Max)
- 最小(Min)
- 平均(Average)
- 積(Multiply)
例えば、コライダーAとコライダーBを持つ衝突マニホールドを考えます。コライダーAの物理マテリアルは、Restitution Combine Function(反発係数結合関数) が Max に設定されており、コライダーBの物理マテリアルは Average に設定されています。Max は Average より優先されるため、この衝突の反発係数は Max 関数を用いて解決されます。
同じ論理が Friction Combine Function(摩擦結合関数) にも適用されます。
注: Friction Combine Function(摩擦結合関数) と Restitution Combine Function(反発係数結合関数) は別々に解決されるため、異なる設定を持ちます。
Back to top