> あ、すみません。せっかくなのでもう一つだけ尋ねておきたいのですけれど、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;
}