예제 #1
0
파일: BossD.java 프로젝트: AnberZhou/exp3d
  @Override
  public void update() {
    rotationSpeedZ.update();
    rotationY.update();
    rotYShakeAmplitude.update();

    // rotationSpeedZ.setTarget(0, 2f);

    rotationSpeed = rotationSpeedZ.get();

    super.update();
    elapsed += Timer.delta;
    scriptInterpreter.updateRunScript();

    // rotZ  = 30f;
    rotY =
        rotationY.get()
            + MathUtil.getCyclicValue(
                -rotYShakeAmplitude.get(), rotYShakeAmplitude.get(), 2f * elapsed);

    if (rotY > 45) {
      width = 25;
      height = 40;
    } else {
      width = height = 40;
    }
    this.bakeDimensions();
  }
예제 #2
0
파일: BossD.java 프로젝트: AnberZhou/exp3d
 @Override
 public void toInitValues() {
   super.toInitValues();
   scale = 4.0f;
   scriptInterpreter.resetState();
   rotationSpeedZ.init(0f);
   rotationY.init(0f);
   rotYShakeAmplitude.init(0f);
   rotationY.setInterpolator(Interpolator.ASYMPTOTIC);
   elapsed = 0f;
   reflectAttack = false;
   setReflectAttack(false);
 }
예제 #3
0
파일: BossD.java 프로젝트: AnberZhou/exp3d
  @Override
  public void receiveDamageFrom(Entity entity, int amount) {

    if (entity.entityType == EntityType.PLAYER) {
      return;
    }

    if (entity.entityType == EntityType.PLAYER_SPECIAL_WEAPON) {
      if (amount > 0) {
        amount = 1000;
        entity.attackPower = 0;
      }
    }

    if (reflectAttack && amount > 0) {
      float hitX = entity.posX;
      float hitY = entity.posY + 20;
      Player player = Engine.player;
      float directionAngle =
          MathUtil.radiansToDegrees
              * MathUtil.getAngleBetween(hitX, hitY, 0f, player.posX, player.posY);

      for (int i = 0; i < 3; i++) {
        Bullet bullet = ShotB.newInstance();
        bullet.registerInLayer();
        bullet.posX = hitX;
        bullet.posY = hitY;
        float modif = 0;
        if (i == 1) modif = -20;
        if (i == 2) modif = 20;
        bullet.setDirAngle(directionAngle + modif);
        bullet.moveSpeed = 150f;
      }
      return;
    }

    if (amount > 0) {
      super.receiveDamageFrom(entity, amount);
      UI.setBossLifeAmount((float) lifeRemaining / lifeStart);
    }
  }