only gameplay issue is that it seems that you enter the jumping state by pressing instead of holding (aka if you just land you can't jump) could be solved by making that state be triggered by holding or an input buffer
// decrease jump buffer every frame if (jumpPressed)jumpBuffer = jumpBufferTime; if (OnFloor() and jumpBuffer > 0) jump();
also the buildings look kinda bad compared to the player