効果音が一部ならない
Posted: 2011年9月30日(金) 21:11
特にプログラムを弄ったわけでもないのに前まで読みこめていた射撃発射音などの効果音がならなくなりました。
しかし、同じプログラム内にある別の射撃音はなったりもします。↓問題のプログラム
まずload部分
//敵のショット音を読み込む
sound_se[0]=LoadSoundMem("../dat/se/enemy_shot.wav");
//敵の死亡音
sound_se[1]=LoadSoundMem("../dat/se/enemy_death.wav");
//自機ショット音を読み込む
sound_se[2]=LoadSoundMem("../dat/se/cshot.wav");
//自機死亡音
sound_se[3]=LoadSoundMem("../dat/se/char_death.wav");
//チャージ
sound_se[4]=LoadSoundMem("../dat/se/charge.wav");
//発射
sound_se[5]=LoadSoundMem("../dat/se/hassya.wav");
//自機弾ヒット音
sound_se[8]=LoadSoundMem("../dat/se/cshot.wav");
//ボムキュイーン音
sound_se[14]=LoadSoundMem("../dat/se/bom0.wav");
//ボムどかーん音
sound_se[15]=LoadSoundMem("../dat/se/bom1.wav");
//アイテムゲット音
sound_se[34]=LoadSoundMem("../dat/se/item_get.wav");
次に弾幕部分
void boss_shot_bulletH003(){
#define TM003 300//何カウント周期か?
int i,k,t=boss_shot.cnt%TM003,t2=boss_shot.cnt;
double angle;
if(t%30==0){ //10カウントおきに6回
angle=bossatan2();
for(i=0;i<20;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col =3;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].angle =angle+PI2/20*i;//円形弾(30way弾)
boss_shot.bullet[k].flag =1;boss_shot.bullet[k].flag2 =1;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =2;
boss_shot.bullet[k].state =0;
se_flag[0]=1; ←ここが通常弾発射音だけどならない
}
}
}
if(t==100)se_flag[4]=1;//マグナスチャージ音 ←ついでにこれもならない
if(t==201){//マグナス発射
angle=bossatan2();
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =FMY/2;
boss_shot.bullet[k].knd =3;
boss_shot.bullet[k].angle =PI/2;
boss_shot.bullet[k].flag =1;boss_shot.bullet[k].flag2 =1;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =0;
boss_shot.bullet[k].state =1;
se_flag[5]=1; ←なぜかこれは鳴る
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet.flag>0){
if(boss_shot.bullet.state==0){
if(boss_shot.bullet.spd>0.5){
if(boss_shot.bullet.cnt>10){
boss_shot.bullet.spd -= 0.005;
}
}
}
}
}
for(int j=0;j<BOSS_BULLET_MAX;j++){
if(boss_shot.bullet[j].flag>0){
if(boss_shot.bullet[j].state==1){
if(t==0)boss_shot.bullet[j].flag=0;
for(int k=0;k<BOSS_BULLET_MAX;k++){
if(boss_shot.bullet[k].flag>0){
if(boss_shot.bullet[k].state==0){
if(boss_shot.bullet[k].x > boss_shot.bullet[j].x){//周囲弾と速射が並んだら
boss_shot.bullet[k].x -= 1;
}else if(boss_shot.bullet[k].x <= boss_shot.bullet[j].x){
boss_shot.bullet[k].x += 1;
}
}
}
}
}
}
}
}
こういった現状です。なるものとならないものが同プログラム内にあります・・・ここのプログラムですが一応音鳴らす部分も↓
void music_play(){
int i;
for(i=0;i<SE_MAX;i++){
if(se_flag==1){
if(CheckSoundMem(sound_se)!=0){
if(i==8)continue;//敵被弾音なので連続で再生されるため、ちゃんと再生し終わってから再生
StopSoundMem(sound_se);
}
PlaySoundMem(sound_se,DX_PLAYTYPE_BACK);
}
}
}
なにか理由があるんでしょうか
しかし、同じプログラム内にある別の射撃音はなったりもします。↓問題のプログラム
まずload部分
//敵のショット音を読み込む
sound_se[0]=LoadSoundMem("../dat/se/enemy_shot.wav");
//敵の死亡音
sound_se[1]=LoadSoundMem("../dat/se/enemy_death.wav");
//自機ショット音を読み込む
sound_se[2]=LoadSoundMem("../dat/se/cshot.wav");
//自機死亡音
sound_se[3]=LoadSoundMem("../dat/se/char_death.wav");
//チャージ
sound_se[4]=LoadSoundMem("../dat/se/charge.wav");
//発射
sound_se[5]=LoadSoundMem("../dat/se/hassya.wav");
//自機弾ヒット音
sound_se[8]=LoadSoundMem("../dat/se/cshot.wav");
//ボムキュイーン音
sound_se[14]=LoadSoundMem("../dat/se/bom0.wav");
//ボムどかーん音
sound_se[15]=LoadSoundMem("../dat/se/bom1.wav");
//アイテムゲット音
sound_se[34]=LoadSoundMem("../dat/se/item_get.wav");
次に弾幕部分
void boss_shot_bulletH003(){
#define TM003 300//何カウント周期か?
int i,k,t=boss_shot.cnt%TM003,t2=boss_shot.cnt;
double angle;
if(t%30==0){ //10カウントおきに6回
angle=bossatan2();
for(i=0;i<20;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col =3;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].knd =1;
boss_shot.bullet[k].angle =angle+PI2/20*i;//円形弾(30way弾)
boss_shot.bullet[k].flag =1;boss_shot.bullet[k].flag2 =1;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =2;
boss_shot.bullet[k].state =0;
se_flag[0]=1; ←ここが通常弾発射音だけどならない
}
}
}
if(t==100)se_flag[4]=1;//マグナスチャージ音 ←ついでにこれもならない
if(t==201){//マグナス発射
angle=bossatan2();
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =FMY/2;
boss_shot.bullet[k].knd =3;
boss_shot.bullet[k].angle =PI/2;
boss_shot.bullet[k].flag =1;boss_shot.bullet[k].flag2 =1;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =0;
boss_shot.bullet[k].state =1;
se_flag[5]=1; ←なぜかこれは鳴る
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet.flag>0){
if(boss_shot.bullet.state==0){
if(boss_shot.bullet.spd>0.5){
if(boss_shot.bullet.cnt>10){
boss_shot.bullet.spd -= 0.005;
}
}
}
}
}
for(int j=0;j<BOSS_BULLET_MAX;j++){
if(boss_shot.bullet[j].flag>0){
if(boss_shot.bullet[j].state==1){
if(t==0)boss_shot.bullet[j].flag=0;
for(int k=0;k<BOSS_BULLET_MAX;k++){
if(boss_shot.bullet[k].flag>0){
if(boss_shot.bullet[k].state==0){
if(boss_shot.bullet[k].x > boss_shot.bullet[j].x){//周囲弾と速射が並んだら
boss_shot.bullet[k].x -= 1;
}else if(boss_shot.bullet[k].x <= boss_shot.bullet[j].x){
boss_shot.bullet[k].x += 1;
}
}
}
}
}
}
}
}
こういった現状です。なるものとならないものが同プログラム内にあります・・・ここのプログラムですが一応音鳴らす部分も↓
void music_play(){
int i;
for(i=0;i<SE_MAX;i++){
if(se_flag==1){
if(CheckSoundMem(sound_se)!=0){
if(i==8)continue;//敵被弾音なので連続で再生されるため、ちゃんと再生し終わってから再生
StopSoundMem(sound_se);
}
PlaySoundMem(sound_se,DX_PLAYTYPE_BACK);
}
}
}
なにか理由があるんでしょうか