ご無沙汰です。
また問題が起きたので質問させていただきます。
元々void Jitama2Move()とvoid Jitama2Move2()の2つの関数を使って2WAY弾を出していたのですが、
1つの関数にまとめてやろうとしてうまくいきませんでした。
やりたい事
弾を画面内に出せる最大数6を上段と下段に分ける
iが奇数の時弾上段発射(3発まで)
iが偶数の時弾下段発射(3発まで)
現在の問題点
弾が期待通りに動かない
最初に弾を発射すると何発かは画面上部を飛ぶ(以後飛ばない)
上段の弾は1発だけ飛ぶ
下段の弾は出てすぐ消える
以下ソース
void Jitama2Move(){
//弾の発射
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if((key & PAD_INPUT_X) && (trigger == 0)){
for(int i=0; i<6; i++){
if (ji2tama[i].life == 0){
ji2tama[i].life = 1;
if((i %= 2) == 1){
ji2tama[i].x = jikidata.x+32;
ji2tama[i].y = jikidata.y+20;
}
if((i %= 2) == 0){
ji2tama[i].x = jikidata.x+32;
ji2tama[i].y = jikidata.y+30;
}
PlaySoundMem(j2beamwav, DX_PLAYTYPE_BACK);
break;
}
}
trigger = 5;
}
if(trigger>0) trigger = trigger - 1;
//弾の移動
for(int i=0; i<6; i++){
if(ji2tama[i].life > 0){
ji2tama[i].x = ji2tama[i].x + idouryou[15]; //idouryouで弾速調整
DrawGraph(ji2tama[i].x,ji2tama[i].y,*(ji2tama[i].ghandle),TRUE);
//画面外に出た時の処理
if(ji2tama[i].x>640) ji2tama[i].life = 0;
}
}
}
if文の条件式(if((i %= 2) == 1)とif((i %= 2) == 0))の使い方が間違っていると思いますが、
どう直したら期待通りに動くか分からないのでアドバイスをいただけるとうれしいです。