First of all sorry for the midair drift to the right, that was a bug after I implemented the moving platforms and didn't come across it until after submission deadline, will have to rewrite the platform script and also add some collision detection for quality of life changes such as sticking to the platform or not falling through the map if you're under a platform.
I calculated platforms' and the player's rotation by using an angle from their position to the middle of the level, then I locked their initial x and y rotation values and only updated the z axis one. So everywhere they are on the level they are rotating to be with their top towards the middle point. And gravity was pretty easy since it's calculated only on x and y axis and has a fixed starting value (in my case I left it default at x 0 y -9.81), and you multiply that vector with the player rotation that I explained before :)