Esempio n. 1
0
 public void update(Player player, float delta) {
   //
   // body.getPosition().set(body.getPosition().x+(body.getPosition().x-player.getX())*delta,body.getPosition().y);
   if (player.getX() < body.getPosition().x) body.applyForceToCenter(new Vector2(-10, 0), true);
   else {
     body.applyForceToCenter(new Vector2(10, 0), true);
   }
 }
Esempio n. 2
0
 private void inputUpdate(float deltaTime) {
   float horizontalForce = 0;
   if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
     horizontalForce -= 1f;
   }
   if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) {
     horizontalForce += 1f;
   }
   if (Gdx.input.isKeyPressed(Input.Keys.SPACE)) {
     player.applyForceToCenter(0, 50, false);
   }
   player.setLinearVelocity(horizontalForce * 5, player.getLinearVelocity().y);
 }
  @SuppressWarnings("Duplicates")
  public void handleContact(Body a, Body b) {
    boolean playerHitAsteroid =
        (WorldHandler.isAsteroid(a) && WorldHandler.isPlayer(b))
            || WorldHandler.isPlayer(a) && WorldHandler.isAsteroid(b);
    boolean bulletHitAsteroid =
        (a.isBullet() && WorldHandler.isAsteroid(b)) || b.isBullet() && WorldHandler.isAsteroid(a);
    boolean playerHitPickup =
        (WorldHandler.isPlayer(a) && WorldHandler.isPickup(b))
            || (WorldHandler.isPickup(a) && WorldHandler.isPlayer(b));

    Body asteroid;
    Body player;
    final Body bullet;
    if (playerHitAsteroid) {
      if (WorldHandler.isAsteroid(a)) {
        asteroid = a;
        player = b;
      } else {
        asteroid = b;
        player = a;
      }
      PlayerActorData p_data = (PlayerActorData) player.getUserData();
      AsteroidActorData a_data = (AsteroidActorData) asteroid.getUserData();
      if (a_data.subHealth(5) <= 0) {
        a_data.isRemoved = true;
        stage.addDead(asteroid);
      }
      asteroid.applyForceToCenter(new Vector2(0, 100f), true);

      if (p_data.subHealth(a_data.getDamage()) <= 0) {
        // game over
        Gdx.app.log("plr", "plr dead"); // todo player death
      }
      if (infoLabel != null) infoLabel.setText("Player HP: " + p_data.getHealth());
      playerHPBar.setBarWidth((int) p_data.getHealth());
    }
    if (bulletHitAsteroid) {
      if (a.isBullet()) {
        bullet = a;
        asteroid = b;
      } else {
        bullet = b;
        asteroid = a;
      }
      ActorData b_data = (ActorData) bullet.getUserData();
      AsteroidActorData a_data = (AsteroidActorData) asteroid.getUserData();

      new Timer()
          .scheduleTask(
              new Timer.Task() {
                @Override
                public void run() {
                  createExplosion(bullet.getPosition().x + 1f, bullet.getPosition().y + 0.7f);
                }
              },
              0.05f);

      b_data.isRemoved = true;
      stage.addDead(bullet);
      playerHandler.addCurrency(2);

      if (a_data.subHealth(WorldHandler.getProjectileDamage(bullet)) <= 0) {
        Gdx.app.log("OGH", "Asteroid dead - Spawn pickup?");
        if (random.nextInt(100) > 70) {
          final Body finalAsteroid = asteroid;
          new Timer()
              .scheduleTask(
                  new Timer.Task() {
                    @Override
                    public void run() {
                      createPickup(finalAsteroid.getPosition().x, finalAsteroid.getPosition().y);
                    }
                  },
                  2);
        }

        stage.addDead(asteroid);
        a_data.isRemoved = true;
      }
    }
    Body pickup;
    if (playerHitPickup) {
      if (WorldHandler.isPlayer(a)) {
        player = a;
        pickup = b;
      } else {
        player = b;
        pickup = a;
      }
      PickupData pData = (PickupData) pickup.getUserData();
      PlayerActorData plData = (PlayerActorData) player.getUserData();

      pData.isRemoved = true;
      stage.addDead(pickup);

      if (pData.getType().equals(Constants.CURRENCY_PICKUP_ASSET_ID))
        playerHandler.addCurrency(100);
      else plData.addHealth(50); // todo magic numbers
    }
  }
Esempio n. 4
0
 public void moveBody(Body body, Vector2 direction) {
   body.applyForceToCenter(direction, true);
 }