効果音天翔記内に元々ある効果音、及び、ユーザー独自の効果音を再生するAPIです。 相場の値を変更したい場合には、以下の
相場変更直前に実行されるイベントハンドラの 再生ファイルの種類効果音に関する関数が、大幅に強化し、関数数も増えた。 音のタイプとして大きく3種類、 の4種類が利用可能である。 音ハンドル型 効果音再生(string 音源ファイル名, BOOL ループ = 効果音ループ::OFF) 効果音再生("testsnd/d.mp3"); あるいは、 効果音再生("myfolder/a.wav"); などというように、ファイル名を指定することで、効果音の単発再生が可能である。 音ハンドル型 効果音再生( int 効果音音源, string 効果音DLL名, BOOL ループ ) 効果音再生(効果音音源::成功); といった形で、天翔記に存在する音源の再生も可能となっている。 Visual Studio 上で 「効果音再生(効果音音源::」と入力すれば自然と候補が出てくるかと思います。 「""」は音声リソースが埋め込まれているDLL名を指定する。 音のループ音をループも可能です。 音ハンドル型 mysnd1; // グローバル変数やクラスフィールドなど // ・・・ mysnd1 = 効果音再生("mysnd/e.mp3", 効果音ループ::ON); というように、再生時に、返り値を「音ハンドル型」の変数にとっておいて、 効果音停止(mysnd1); とすれば、止まる。 音ハンドル型 hMySnd = NULL; string カスタム::On_噴出メッセージ直前(string 武将名, string 元メッセージ, メッセージ関連情報型 メッセージ関連情報) { if ( 武将名=="真田幸隆" ) { if ( !hMySnd ) { hMySnd = 効果音再生( "d.mp3", 効果音ループ::ON ); } else { 効果音停止( hMySnd ); hMySnd = NULL; } } return ""; } などとすればよい。 試しに、「真田幸隆」に会見でもすれば音が鳴りはじめ、 効果音同時再生数効果音は同時に最大で「8つ」まで再生される。 常識的に考えても、効果音が8つも鳴っていたら、かなりうるさいと言えよう。 3D空間音音ハンドル型 3D効果音再生(string 音源ファイル名, BOOL ループ = 効果音ループ::OFF, 3D位置型 位置, 3Dベクトル型 移動/毎秒); 3D空間で音を再生することが可能である。 string カスタム::On_噴出メッセージ直前(string 武将名, string 元メッセージ, メッセージ関連情報型 メッセージ関連情報) { if ( 武将名=="真田幸隆" ) { 3D効果音再生( 効果音音源::台風, "", 効果音ループ::OFF, 3D位置型(5,0,0), 3Dベクトル型(-2,0,0) ); } return ""; } などとすると、音が右から左へと、移動してゆく。 逆に、 string カスタム::On_噴出メッセージ直前(string 武将名, string 元メッセージ, メッセージ関連情報型 メッセージ関連情報) { if ( 武将名=="真田幸隆" ) { 3D効果音再生( 効果音音源::台風, "", 効果音ループ::OFF, 3D位置型(-5,0,0), 3Dベクトル型(2,0,0) ); } return ""; } などとすると、音が左から右へと、移動してゆく。 3D位置型にて、「音の再生される位置」を指定し、「3Dベクトル型」にて、1秒あたり、どの方向へと音源が移動するのかを指定する。 3D空間のデカルトと方向3D位置型(x, y, z) や 3Dベクトル型(x,y,z)の座標軸は以下の通りである。 3D位置型(-5,0,0) ということは、人間の5m左で音を再生する考えれば良い。 又、 このように、空間にて移動する音を再生することが可能である。 2chスピーカーやヘッドフォンでも充分体感できるが、5.1chのスピーカーであれば、一層臨場感が増すだろう。
全ての効果音の一斉停止全ての効果音停止() 最後に、ScenarioModから再生した全ての音を強制的に停止する手段として、 全ての効果音停止(); という関数が利用可能である。 Midiの再生MIDIフォーマットも再生可能です。 効果音再生("mydir/a.mid", 効果音ループ::ON); Midiには特殊な概念として、「Midiシンセサイザー」という概念がある。 // "TiMidi" という文字列が含まれるMidiマッパーデバイス(シンセサイザー)が、Windowsにインストールされているならば、そちらで再生する。 Set_MIDIデバイス("TiMidi"); これは、ゲーム開始時に設定するだけではなく、途中で何度でも切替可能である。 MIDIは3D効果音再生には対応していない。 独自音源のwaveなどを1つのdllにパックするBOOL 関数::Set_効果音DLL追加(string 効果音DLL名) BOOL 効果音再生( int 効果音音源, string 効果音DLL名="" )
というように、第2引数として効果音用DLLを指定することが出来ます。 使い方:スタム::初期化()イベントハンドラ内にて、効果音用のDLLを呼び出す。 void カスタム::初期化() { Set_効果音DLL追加("my_se1.dll"); // dllの名前はなんでも良い。 Set_効果音DLL追加("my_se2.dll"); // 複数の効果音用のdllが登録可能。 } 実際にどこかで鳴らす。 効果音再生( 3, "my_se1.dll"); // my_se1.dll内にある、 「3」というリソース名が付いたWAV音を鳴らす。 効果音再生(20, "my_se2.dll"); // my_se2.dll内にある、「20」というリソース名が付いたWAV音を鳴らす。 効果音再生( 3, "my_se2.dll"); // my_se2.dll内にある、 「3」というリソース名が付いたWAV音を鳴らす。 効果音用DLLの作り方①新規にDLLのリソースパックを作る方法は「複数の効果音・画像を1つのDLLに」にて詳細に解説されています。 効果音用DLLの作り方②
効果音dllを作ったら、Set_効果音DLL追加("作ったdllのファイル名")で読み込む上述のソースコードのように Set_効果音DLL追加(...)を利用して、対象のdllを読み込んで下さい。 より詳細を知るには...効果音に関する主な所は以上となります。 詳しくは「効果音情報型.h」や「効果音情報列挙.h」などを参照してください。 |