4

AndEngineで簡単なゲームを作成しています。ボールを床に向けて落とし、床にぶつかるたびに短い衝突音を鳴らしたい。onUpdate()メソッドでは、衝突をチェックし、それに応じてサウンドを再生します。

サウンドの再生にはクラスSoundを使用します(AndEngineのSoundExampleのように)。サムスンギャラクシーS2でのテスト。

問題は、サウンドの再生時にプログラムが遅れることです。また、ゲームの物理にも影響します(サウンドを無効にすると、ボールが最高点よりも高く跳ね返る場合があります)。

これはコードです:

public void onUpdate(float pSecondsElapsed) {
// mSound.play();       
if (this.mSprite.collidesWith(ball.getSprite())) {          
    if (!colliding && mSound != null){ // play sound for first collision only
        mSound.play();          
        colliding = true;
    }
}
else{
    colliding = false;
}

}

mSound.play()を削除するか、サウンドを再生し続けると(2行目のコメントを削除)、プログラムはスムーズに動作します。

誰かが同じ問題に遭遇しますか?そして、遅れを取り除くための解決策がありますか?どうもありがとう!

4

1 に答える 1

1

サウンドを再生し続けるとスムーズに動作するとおっしゃっていましたが、問題はサウンドにありません。

collidesWith()メソッドが原因である可能性があります。onUpdateはフレームごとに呼び出されることに注意してください。コードを再設計するか、1秒あたりのフレーム数を制限する必要があります[FixedStepEngineを使用するようにエンジンオプションを変更してください]

于 2012-11-05T19:00:41.987 に答える