This document is about: QUANTUM 3
SWITCH TO

マテリアル

概要

すべてのPhysicsBodyPhysicsMaterial(Quantumデータアセット)が必要です。PhysicsMaterialは、物理エンジンによる衝突の解決・力や速度の積分に必要なプロパティを保持しています。

PhysicsMaterialデータアセット

PhysicsMaterialは、以下のパラメータを持ちます。

  • Restitution (反発係数:"bounciness"や"bounce"とも呼ばれる)
  • Restiution Combine Function
  • Friction Static(静摩擦係数)
  • Friction Dynamic(動摩擦係数)
  • Friction Combine Function

PhysicsMaterialアセットが設定されていない場合は、デフォルトの物理マテリアルが割り当てられます。デフォルトの物理マテリアルは、SimulationConfigの物理設定にリンクされています。

Adjusting Properties to Physics Materials
物理マテリアルのプロパティの調整

PhysicsMaterialアセットは、PhysicsColliderに直接割り当てることができます。

C#

var material = f.FindAsset<PhysicsMaterial>("steel");
collider.Material = material;

f.Set(entity, collider);

重要な備考

PhysicsMaterialはデータアセットで、Quantumアセットデータベースに存在します。アセットはロールバック可能なゲームステートの一部ではないため、すべてのPhysicsMaterialは実行時に不変であることが前提です。ゲーム実行中にプロパティを変更すると、非決定論的な動作を引き起こします。

PhysicsMaterialは他のデータアセットと同じルールに従います。

C#

// ロールバックできないため、安全ではありません
collider->Material.Restitution = FP._0;

// 参照の切り替えはロールバックできるため、安全です
var newMaterial = f.FindAsset<PhysicsMaterial>("ice");
collider->Material = newMaterial;

Combine関数

Combine関数は、優先順位に基づいて、各衝突ペアの反発係数と摩擦係数を解決するために使用されます。物理システムは2つのコライダーの優先度が高い方の関数を選択します。優先順位は次の通りです。

  1. Max (最大)
  2. Min (最小)
  3. Average (平均)
  4. Multiply (積)

例えば、コライダーAとコライダーBの衝突ペアを考えます。コライダーAの物理マテリアルのRestitution Combine FunctionMax、コライダーBの物理マテリアルのRestitution Combine FunctionAverageに設定されています。MaxAverageより優先されるため、この衝突の反発係数はMax関数を使用して解決されます。

同じロジックがFriction Combine Functionでも適用されます。

注意: Friction Combine FunctionRestitution Combine Functionは別々に解決されるため、設定も別になっています。

Back to top