トップページ > 記事閲覧
3Dサウンドの再生中にその位置を更新すると変な感じに
名前:北条 日時: 2013/08/10 04:40

こんにちは。 前に実装された3Dサウンドを使用したプログラムを書いていたのですが、移動する音源に対応するため、毎フレームごとに Set3DPositionSoundMem()で音の再生中も音源の座標の位置を更新するようにしたところ、リスナーの位置がz軸のプラス方向に移動すると、プツッっと切れて再生されなくなってしまいました。 勘違いだったら申し訳ないのですが、確認していただけると幸いです。 そもそもSet3DPositionSoundMem()で移動する音源に対応する事は正式に認められた使い方なのでしょうか… DXライブラリの3Dサウンドの資料があまり見つけられなかったので質問させていただきました…既出だったり勘違いでしたら申し訳ないです。
メンテ

Page: 1 |

Re: 3Dサウンドの再生中にその位置を更新すると変な感じに ( No.1 )
名前:北条(解決) 日時:2013/08/10 05:14

すみません、自分の勘違いでした… コピーされて利用されているはずの音が、オリジナルのものとすり替わっていただけでした。
メンテ
Re: 3Dサウンドの再生中にその位置を更新すると変な感じに ( No.2 )
名前:北条 日時:2013/08/10 06:01

あ、すみません。せっかくなのでもう一つだけ尋ねておきたいのですけれど、3DサウンドのSet3DPositionSoundMem()は、効果音の再生中に変更すると、再生しながら再生する場所が変化しますか? 自分で試してみたところ、移動にあわせて音源が移動していないように感じたのですが、確証に至らなくて。どういう仕様かだけ教えていただけるととても助かります。 よろしくお願いします。
メンテ
Re: 3Dサウンドの再生中にその位置を更新すると変な感じに ( No.3 )
名前:管理人 日時:2013/08/11 15:03

> あ、すみません。せっかくなのでもう一つだけ尋ねておきたいのですけれど、3DサウンドのSet3DPositionSoundMem()は、効果音の再生中に変更すると、再生しながら再生する場所が変化しますか? はい、変化します テストプログラムを組んでみましたので、よろしければ実行してみてください ( Test.wav の部分はお手元のサウンドファイル名に変更してください ) #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int soundhandle ; VECTOR emitter ; VECTOR listener ; float xadd ; VECTOR Temp ; // ウインドウモードで起動 ChangeWindowMode( TRUE ); Set3DSoundOneMetre( 64.0f ) ; // SetEnableXAudioFlag( FALSE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // 画像の読み込み SetCreate3DSoundFlag( TRUE ) ; soundhandle = LoadSoundMem( "Test.wav" ) ; SetCreate3DSoundFlag( FALSE ) ; PlaySoundMem( soundhandle, DX_PLAYTYPE_LOOP ) ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ); emitter = VGet( 320.0f, 0.0f, 300.0f ) ; listener = VGet( 320.0f, 0.0f, 240.0f ) ; Set3DPositionSoundMem( emitter, soundhandle ) ; Set3DRadiusSoundMem( 256.0f, soundhandle ) ; Temp.x = 0.0f ; Temp.y = 0.0f ; Temp.z = 1.0f ; Set3DSoundListenerPosAndFrontPos_UpVecY( listener, VAdd( listener, Temp ) ) ; xadd = 4.0f ; // メインループ(何かキーが押されたらループを抜ける) while( ProcessMessage() == 0 ) { // 画面のクリア ClearDrawScreen(); emitter.x += xadd ; if( emitter.x > 640.0f || emitter.x < 0.0f ) { xadd = -xadd ; emitter.x += xadd ; } Set3DPositionSoundMem( emitter, soundhandle ) ; DrawBox( listener.x - 8, 480.0f - ( listener.z + 8 ), listener.x + 8, 480.0f - ( listener.z - 8 ), GetColor( 255,0,0 ), TRUE ) ; DrawBox( emitter.x - 8, 480.0f - ( emitter.z + 8 ), emitter.x + 8, 480.0f - ( emitter.z - 8 ), GetColor( 255,0,255 ), TRUE ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }
メンテ
Re: 3Dサウンドの再生中にその位置を更新すると変な感じに ( No.4 )
名前:北条(解決) 日時:2013/08/11 19:56

音源の移動を確認できました! 確認できなかったのは、移動されるべき音にしっかり毎フレームごとの適応ができていなかったからでした。 お忙しいところ、有難うございます!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存