2.5D物理
はじめに
2.5D物理を使用すると、高さ(厚さ)を追加しながら、2D物理エンジンのパフォーマンスの利点を享受することができます。
注意: Use Vertical Transform
はデフォルトで有効になっていて、SimulationConfig
アセットの物理設定から切り替え可能です。
垂直データを持つ2.5D物理
StaticCollider2D
は単にHeight
を設定するだけで、Quantumの2.5D物理を使用して3Dの「厚み」を持たせることができます。

エンティティでは、Transform2DVertical
コンポーネントを追加してHeight
とPosition Offset
を設定するだけです。これによって、XZ平面のゲームにY軸の高さが追加されます。
注意: Transform2DVertical
にはTransform2D
コンポーネントが必要です。
C#
var transform2dVertical = new Transform2DVertical();
transform2dVertical.Height = FP._1;
transform2dVertical.Position = FP._1;
f.Set(entity, transform2dVertical);

エンティティや静的オブジェクトが3Dの場合、物理エンジンはそれを考慮して衝突を解決します。これによって、「空中」のエンティティが「地上」のエンティティの上を飛ぶことが可能になります。
物理エンジンの影響
エンティティの分離
重要: 衝突を検知しても、衝突ソルバーは追加の次元情報を使用しません。これによって、物理エンジンで2D平面の分離が実行される際に、エンティティがバウンスすることがあります。
Transform2DVertical.Position
に手動で速度や力を直接適用することで、3D重力をシミュレートすることが可能です。ただし、物理エンジンはその情報を衝突判定にのみ使用します。
レイキャストとオーバーラップ
これらの関数はデフォルトでは、2D平面上でのみ実行されます。2.5Dを利用する場合には、Height
と垂直Offset
をパラメーターに取るオーバーロード版を使用してください。