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をパラメーターに取るオーバーロード版を使用してください。