2010/02/05

SIO2でサウンドを鳴らす(2) このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

前回は、iPhone/iPad 向けゲームエンジンである SIO2 で音を出す方法を調べました。

今回は、Tutorial06 をベースに作っているオレオレゲームに、実際に BGM を追加するところまでやってみます。



動いている様子

いまのところこんな感じで動いています。




Blender でサウンドファイルを指定

前回調べた通り、適当なマテリアルの3番目のテクスチャに ogg ファイルを指定して、適当なオブジェクトにそのマテリアルを設定します。これで sio2_exporter.py を実行して .sio2 ファイルにエクスポートします。



ソースコードの変更

tutorial09 のサウンド関連っぽい行をそのままコピペしてくれば良いです。
初期化したあと、sio2 ファイルに含まれるサウンドを取り出したり登録したりする便利関数を呼びます。


//// Add to createFramebuffer (file EAGLView.mm)
sio2InitAL();


//// Add to templateLoading (file template.mm)
// Bind all unique sound buffer (.ogg) currently in
// the resource manager with to its appropriate material.
sio2ResourceBindAllSoundBuffers( sio2->_SIO2resource );

// Also generate the sound source buffer ID.
sio2ResourceGenId( sio2->_SIO2resource );

// Bind all the sound source to their respective
// sound buffer.
sio2ResourceBindAllSounds( sio2->_SIO2resource );

// Set the volume for the ambient (music) sound source.
sio2->_SIO2window->volume = 0.65f;

// Set the volume for the FX sound source.
sio2->_SIO2window->fx_volume = 0.85f;

// Affect the ambient volume to all ambient sound.
sio2ResourceSetAmbientVolume( sio2->_SIO2resource,
sio2->_SIO2window );

// Affect FX sound volume to all the FX sound.
sio2ResourceSetFxVolume( sio2->_SIO2resource,
sio2->_SIO2window );




Xcode のデバッガについて

当初、(sio2InitAL の呼び忘れで)クラッシュしていたのでデバッガで調べていましたが、変数の値とかいろいろ調べる UI が良かったです。マウスでポイントしていくだけで構造を辿れるのが便利。なんでも GUI でやろうとしないで、中断状態のまま CUI の gdb に移れるのもポイント高いと思いました。