public void update(float delta) {
    if (levels.get(currentLevel - 1).isWon == true) {
      if (currentLevel >= levels.size()) {
        Gdx.app.exit();
      }
      gravBot.getBody().setTransform(.16f, 0, 0);
      gravBot.getBody().setLinearVelocity(new Vector2(0, 0));
      gravBot.getBody().setAngularVelocity(0);
      destroyLevel();
      currentLevel++;
      startLevel(currentLevel);
    }

    gameWorldPhysics.step(delta, 3, 3);
    gravBot.update(delta);
    for (Obstacle obstacles : obs) {
      obstacles.update(delta);
    }
    clampToScreen();
    runTime += delta;
  }
  // Clamps gravBot to screen bounds
  public void clampToScreen() {
    Vector2 gBVec = gravBot.getPosition();
    float width = gravBot.getWidth();
    float height = gravBot.getHeight();

    float screenWidth = Gdx.graphics.getWidth();
    float screenHeight = Gdx.graphics.getHeight();
    float gameWidth = 132;
    float gameHeight = screenHeight / (screenWidth / gameWidth);

    if (gBVec.x < (width / (PPM * 2))) {
      gravBot.getBody().setTransform(width / (PPM * 2), gBVec.y, 0);
      gravBot.getBody().setLinearVelocity(new Vector2(0, 0));
      gravBot.getBody().setAngularVelocity(0);
    }
    if (gBVec.x > (gameWidth - (width / 2)) / PPM) {
      gravBot.getBody().setTransform((gameWidth - (width / 2)) / PPM, gBVec.y, 0);
      gravBot.getBody().setLinearVelocity(new Vector2(0, 0));
      gravBot.getBody().setAngularVelocity(0);
    }
    if (gBVec.y < (height / (PPM * 2))) {
      gravBot.getBody().setTransform(gBVec.x, height / (PPM * 2), 0);
      gravBot.getBody().setLinearVelocity(new Vector2(0, 0));
      gravBot.getBody().setAngularVelocity(0);
    }
    if (gBVec.y > (gameHeight - (height / 2)) / PPM) {
      gravBot.getBody().setTransform(gBVec.x, (gameHeight - (height / 2)) / PPM, 0);
      gravBot.getBody().setLinearVelocity(new Vector2(0, 0));
      gravBot.getBody().setAngularVelocity(0);
    }
  }