Попытка воспроизведения звука во время анимации, однако звук воспроизводится один раз для каждого кадра анимации. - PullRequest
1 голос
/ 13 января 2020

Как видно из названия, я пытаюсь запустить звуковой фрагмент, когда воспроизводится определенная анимация, у меня нет проблем с другими звуками, и, используя дедукцию, я пришел к выводу, что звуки зацикливаются каждый раз в кадре анимации. проходит. Предполагается, что акула сталкивается с миной, мина взрывается, слышен гул и игра заканчивается.

Редактировать: код для звука штанги вызывается только при обнаружении столкновения. Есть еще один звук, когда игрок сталкивается с предметами коллекционирования, но этот звук работает нормально. Только когда игрок сталкивается с миной и проигрывает анимацию взрыва, звук портится. Он перезапускается каждый раз, когда проходит кадр анимации.

 if (Intersector.overlaps(this.mineC[i], this.sharkC)) {
            this.boomsound.play();
            this.collision = true;
            this.gamestate = 2;
            this.runtime += Gdx.graphics.getDeltaTime();
            this.game.batch.draw((TextureRegion) this.boom.getKeyFrame(this.runtime, false), (float) (Gdx.graphics.getWidth() / 5), this.sharkY - 120.0f);

            this.boom.setPlayMode(PlayMode.NORMAL);
            if (this.boom.isAnimationFinished(this.runtime)) {
                boomsound.stop();
                this.game.setScreen(new GameOverShark(this.game));
            }
        }

1 Ответ

1 голос
/ 13 января 2020

this.boomsound.play() вызывается на каждой итерации в вашем коде, вы должны вызывать его только один раз

 // field
 private boolean boomNotStarted = true; 

 ....

 if (Intersector.overlaps(this.mineC[i], this.sharkC)) {
      if (boomNotStarted) {
            this.boomsound.play();
            this.boomNotStarted = false;
      }

      ...
 }
...