2.5D Physics
Introduction
Using 2.5D Physics you are able to add Height, or thickness depending on your perspective, while still benefiting from most performance advantages available in 2D.
N.B.: Use Vertical Transform has to be manually enabled in the SimulationConfig asset's Physics settings.
2.5D Physics with Vertical Data
StaticCollider2D can have 'thickness' in the 3rd dimension using Quantum's 2.5D physics; simply set the Height:
For Entities, just add the Transform2DVertical component and set its Height and Position. On a Quantum XZ-oriented game, this adds height on the Y axis, for example.
N.B.: Transform2DVertical requires the Transform2D component.
C#
var transform2dVertical = new Transform2DVertical();
transform2dVertical.Height = FP._1;
transform2dVertical.Position = FP._1;
f.Set(entity, transform2dVertical);
If entities or statics have a 3rd dimension, the physics engine will take into consideration when solving collisions. This allows for 'aerial' entities to fly over 'ground-based' ones, etc.
Physics Engine Implications
Entity Separation
Important: When a collision is detected, the collision solver does not use the extra dimension information. This can result in entity bounce when separation is performed on the basic 2D plane of the physics engine.
It is possible to simulate 3-dimensional gravity by manually applying speed and forces directly on Transform2DVertical.Position. The physics engine will use that information only for collision detection though.
Raycast and Overlaps
These functions are by default all flat and only execute on the 2D plane. To take advantage of 2.5D, you have to use the overloaded version that takes the height and vertical offset as parameters.
Back to top