Fixed a lot of issues by using proper 2D physics.