This document is about: QUANTUM 3
SWITCH TO

マテリアル

概要

すべての PhysicsBodyPhysicsMaterial(Quantumデータアセット)を必要とします。PhysicsMaterial は、物理エンジンが衝突の解決、力や速度の統合を行うために必要なプロパティを保持しています。

PhysicsMaterialデータアセット

PhysicsMaterialは、以下のパラメータを保持します:

  • 反発係数(時々「バウンシネス」または「バウンス」と呼ばれる)
  • 反発係数結合関数
  • 静止摩擦係数
  • 動摩擦係数
  • 摩擦結合関数

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

Adjusting Properties to Physics Materials
物理マテリアルに対するプロパティの調整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#

// 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つのコライダーから最高の優先度を持つ関数を選択します。優先順位は次のとおりです:

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

例えば、コライダーAとコライダーBを持つ衝突マニホールドを考えます。コライダーAの物理マテリアルは、Restitution Combine Function(反発係数結合関数)Max に設定されており、コライダーBの物理マテリアルは Average に設定されています。MaxAverage より優先されるため、この衝突の反発係数は Max 関数を用いて解決されます。

同じ論理が Friction Combine Function(摩擦結合関数) にも適用されます。

注: Friction Combine Function(摩擦結合関数)Restitution Combine Function(反発係数結合関数) は別々に解決されるため、異なる設定を持ちます。

Back to top