public void FixedUpdate()
        {
            Vector2 deltaPosition = velocity.DeltaPosition;
            Vector2 moveAmount    = movement.TryToMove(deltaPosition);

            velocity.ResolveCollision(moveAmount);
            gravity.ApplyGravity();
        }
 public override void Push(float distance, Dir4 dir)
 {
     movement.TryToMove(distance, dir);
 }