Re: 効果音の再生について ( No.1 ) |
- 名前:チップ 日時:2017/02/02 10:19
できれば PlaySoundMem にSoundHandle番号とは別の個別引数が追加された関数があって
同じSoundHandle番号でコールされてもそちらの番号が重複していない場合は新しい音が前回コールされたSoundHandle番号の音と
平行してコールされるようになっていたりすると大変ありがたいのですが・・・。
というか皆さんはどう解決しているのでしょうか?
攻撃音やダメージ音、環境音など同じ音を重ねて鳴らしたいケースは多いと思うのですが。
|
Re: 効果音の再生について ( No.2 ) |
- 名前:管理人 日時:2017/02/03 00:43
> 連続で同じ音を重ねて呼びたい場合もあるかと思うのですがこういう場合はどう対処したらよいのでしょうか?
LoadSoundMem で読み込んだサウンドハンドルは、デフォルトの状態でも 3音まで重ねて再生されるようになっています
ただ、LoadSoundMem の前に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ); などを実行してストリーミング再生をする
サウンドハンドルとなっていた場合は重ねて再生されませんので、重ねて再生したい効果音用のサウンドファイルを読み込む際は
LoadSoundMem の前に SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMNOPRESS ); を実行してストリーミング再生ではない
普通の再生を行うサウンドハンドルとして読み込むようにしてみてください
因みに重ねて再生される数を 3音以上にしたい場合は LoadSoundMem の第二引数に重ねて再生したい数を渡してください( 現時点では最大数は 8 です )
// 6音まで重ねて再生されるようにして読み込む
int SoundHandle = LoadSoundMem( "TestSound.wav", 6 ) ;
よろしければお試しください m(_ _)m
|
Re: 効果音の再生について ( No.3 ) |
- 名前:チップ 日時:2017/02/03 21:11
ご教授ありがとうございます。
LoadSoundMemByMemImage を使用する場合は第三引数に重ねたい再生数を渡すという認識でよろしいでしょうか?
|
Re: 効果音の再生について ( No.4 ) |
- 名前:チップ 日時:2017/02/03 21:25
すみません。どうもそもそものデフォルト状態で
LoadSoundMemを使用した場合はたしかに3音重なって音が鳴るのですが、
LoadSoundMemByMemImageを使用した場合は重複で同じハンドル番号の音が鳴らずに新しいコールで前の音が消されてしまうようです。
何か心当たりはございますでしょうか?
LoadSoundMemByMemImageを使っていた箇所をそのままLoadSoundMemに変えたら不具合はなくなったので関数内部の処理が原因ではないかなと。
|
Re: 効果音の再生について ( No.5 ) |
- 名前:管理人 日時:2017/02/05 13:04
|
Re: 効果音の再生について ( No.6 ) |
- 名前:チップ(解決) 日時:2017/02/05 14:33
迅速なご対応ありがとうございます!
本当に助かりました!
|