๐๏ธ Overview
Movement systems take the entity's current velocity VelocityComponent and its desired velocity DesiredVelocityComponent and update its VelocityComponent. Each movement system has a component where properties like acceleration can be adjusted.
๐๏ธ Movement 2D
This movement system is suitable for movemement in 2D. The logic is implemented inside Move2DSystem, which works with Movement2DComponent. The following properties can be set on the Movement2DComponent:
๐๏ธ Movement 3D
This movement system is suitable for flying or swimming movemement in 3D. It's almost identical to 2D movement but works in 3D. Also, the entities bank to turns. The logic is implemented inside Move3DSystem, which works with Movement3DComponent.
๐๏ธ Movement 2.5D
The Move25DSystem is suitable for movement on a 3D surface, for example a terrain. It is our replacement for Unity's CharacterController which works with ECS. The Move25DSystem is only usable with CollideAndSlideSystem, and so KinematicBodyAuthoring must be added any entity which wants to use it.
๐๏ธ Collision Resolution
Normally in Unity CharacterController handles both movement and collision resolution. Here the collision resolution is split into a separate system - CollideAndSlideSystem which implements a collide and slide algorithm. This allows the collision resolution to be used with any movement system. For now the algorithm only supports a sphere shape to detect collisions. The system takes the entities' RadiusComponent as the sphere's radius. Collisions are detected against any Unity Collider in the scene. A collider does not need to be present on the entities themselves.