Example #1
0
  @Override
  public void tick(float delta) {
    super.tick(delta);

    body.applyForceToCenter(movement, true);
    if (gasPressed) {
      if (!exhaustSoundPlaying && !isCrashed()) {
        exhaustSound.play();
        exhaustSoundPlaying = true;
      }
      accelerate();
    }
    if (leftPressed) {
      body.applyAngularImpulse(
          isReversedSteering ? MathUtils.radDeg * -MAX_TURN_DEG : MathUtils.radDeg * MAX_TURN_DEG,
          true);
    }
    if (rightPressed) {
      body.applyAngularImpulse(
          isReversedSteering ? MathUtils.radDeg * MAX_TURN_DEG : MathUtils.radDeg * -MAX_TURN_DEG,
          true);
    }
    if (!gasPressed) {
      exhaustSound.stop();
      exhaustSoundPlaying = false;
    }

    if (Gdx.app.getType() == ApplicationType.Android) {
      handleTouchPadInput();
      touchPadStage.act(delta);
    }

    sprite.setPosition(
        getPosition().x - sprite.getWidth() / 2, getPosition().y - sprite.getHeight() / 2);
    sprite.setRotation(body.getAngle() * MathUtils.radiansToDegrees);

    // update exhaust
    exhaust.setPosition(getPosition().x, getPosition().y);
    exhaust.update(delta);
    explosion.update(delta);

    for (Bullet bullet : bullets) {
      bullet.tick(delta);
    }

    if (crashed) {
      timePassed += delta;
      ableToShoot = false;
      playExplosion();
    }
  }