This document is about: QUANTUM 3
SWITCH TO

Materials

概述

每個 PhysicsBody(物理主體)都需要一個 PhysicsMaterial(物理材料,一種Quantum數據資產)。物理材料包含物理引擎用於解算碰撞、力和速度積分所需的屬性。

PhysicsMaterial數據資產

PhysicsMaterial包含以下參數:

  • 恢復係數(有時稱為「彈性」或「反彈力」)
  • 恢復係數組合函數
  • 靜摩擦係數
  • 動摩擦係數
  • 摩擦組合函數

如果未指定 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#

// 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;

組合函數

用於解算每個碰撞流形(一對碰撞體)的恢復係數和摩擦的組合函數,是基於組合函數的優先級順序確定的。物理系統會從兩個碰撞體中選擇優先級最高的函數。
優先級順序如下:

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

例如:考慮一個包含碰撞體 A 和碰撞體 B 的碰撞流形。碰撞體 A 的物理材料的「恢復係數組合函數 」設為 最大值(Max),而碰撞體 B 的物理材料的該函數設為 平均值(Average)。由於「最大值」的優先級高於「平均值」,因此該碰撞的恢復係數將使用「最大值」函數來解算。

同樣的邏輯也適用於「摩擦組合函數」。

注意: 摩擦組合函數恢復係數組合函數 是單獨解算的,因此它們具有不同的設置。

Back to top