public void updateGround() {
        if(!prot.isAirborne()) {
            if(!PhysicsUtil.touchesAbove(prot.getGround(), prot)) {
                prot.detach();
                prot.setAirborne(true);
                for(Block block:blocks.getBlocksAt(prot.getCenterX()-prot.getRectangleWidth()/2)) {
                    if(PhysicsUtil.touchesAbove(block, prot)) {
                        prot.setGround(block);
                        prot.setAirborne(false);
                        return;
                    }
                }
                for(Boulder boulder:blocks.getBouldersAt(prot.getCenterX()-prot.getRectangleWidth()/2)) {
                    if(PhysicsUtil.touchesAbove(boulder, prot)) {
                        prot.setGround(boulder);
                        prot.setAirborne(false);
                        return;
                    }
                }
                for(MovingPlatform platform:movingPlatforms) {
                    if(PhysicsUtil.touchesAbove(platform, prot)) {
                        prot.setGround(platform);
                        prot.setAirborne(false);
                        return;
                    }
                }
            }
        }
    }