サイトのトップへ戻る

Cocos2d-x ドキュメント 日本語訳

サイト内検索

音声

あなたのゲームにはきっと音声が必要になります! Cocos2d-x にはSimpleAudioEngineと呼ばれる音声エンジンが搭載されています。 これを使えば、ゲームプレイ中の効果音だけでなくBGMも再生することができます。 SimpleAudioEngineは共有シングルトンオブジェクトなので、コード上のどこからでも簡単に呼び出すことができます。 簡単なHelloWorld プロジェクトを作成すると、Cocos2d-xがあなたに代わって必要な設定を全て行うので、すぐに音声を使うことができます。 また、mp3Core Audio Formatを含む様々な形式をサポートしています。



はじめに

SimpleAudioEngine API はとても簡単に使用できます。



BGMを再生する

BGMとして使用するために音声ファイルを再生します。これは延々とリピート再生をすることが可能です。

auto audio = SimpleAudioEngine::getInstance();

// set the background music and continuously play it.
audio->playBackgroundMusic("mymusic.mp3", true);

// set the background music and play it just once.
audio->playBackgroundMusic("mymusic.mp3", false);


効果音を再生する

効果音を再生します。

auto audio = SimpleAudioEngine::getInstance();

// play a sound effect, just once.
audio->playEffect("myEffect.mp3", false, 1.0f, 1.0f, 1.0f);


音楽と効果音を一時停止、停止、再開する

音楽や効果音の再生を開始したら、特定の操作をした後に一時停止、停止、再開をする必要があるかもしれません。これは簡単に行うことができます。



一時停止

auto audio = SimpleAudioEngine::getInstance();

// pause background music.
audio->pauseBackgroundMusic();

// pause a sound effect.
audio->pauseEffect();

// pause all sound effects.
audio->pauseAllEffects();


停止

auto audio = SimpleAudioEngine::getInstance();

// stop background music.
audio->stopBackgroundMusic();

// stop a sound effect.
audio->stopEffect();

// stops all running sound effects.
audio->stopAllEffects();


再開

auto audio = SimpleAudioEngine::getInstance();

// resume background music.
audio->resumeBackgroundMusic();

// resume a sound effect.
audio->resumeEffect();

// resume all sound effects.
audio->resumeAllEffects();


高度なオーディオ機能



セットアップ

SimpleAudioEngine APIは簡単に使い始めることができます。 ゲームで音声を使用する際には、覚えておかなければならない留意事項があります。 主に、携帯やタブレットのようなモバイル端末を操作している時のことです。 携帯で複数の作業しており、アプリを切り替えた時に何が起きるでしょうか? もしくは電話がかかってきた時は? ゲーム中ではこれらの例外を処理する必要があります。 幸いにも、Cocos2d-xがこれの助けとなってくれます。

AppDelegate.cpp内の、以下のメソッドに注目してください:

// This function will be called when the app is inactive. When comes a phone call,
// it's be invoked too
void AppDelegate::applicationDidEnterBackground() {
    Director::getInstance()->stopAnimation();

    // if you use SimpleAudioEngine, it must be pause
    // SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
    Director::getInstance()->startAnimation();

    // if you use SimpleAudioEngine, it must resume here
    // SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}

SimpleAudioEngine用のコードがコメントアウトされていることに気づきましたか? あなたがBGMや効果音のために音声を使用している場合は、この行のコメントアウトを解除するようにしてください。



音声を事前読み込みする

音楽やエフェクトが必要な時に既に準備できているようにするため、 ゲーム開始時にそれらを事前読み込みしておきたいかもしれません。

auto audio = SimpleAudioEngine::getInstance();

// pre-loading background music and effects. You could pre-load
// effects, perhaps on app startup so they are already loaded
// when you want to use them.
audio->preloadBackgroundMusic("myMusic1.mp3");
audio->preloadBackgroundMusic("myMusic2.mp3");

audio->preloadEffect("myEffect1.mp3");
audio->preloadEffect("myEffect2.mp3");

// unload a sound from cache. If you are finished with a sound and
// you wont use it anymore in your game. unload it to free up
// resources.
audio->unloadEffect("myEffect1.mp3");


音量

コード上から効果音や音楽の音量を上げたり下げたりできます。

auto audio = SimpleAudioEngine::getInstance();

// setting the volume specifying value as a float
audio->setEffectsVolume(5.0f);