以前は敵が1体だったので,妥協案ですませましたが,今回は複数配置を予定しています。
まず,敵が横に移動するものとして敵のブロックの当たる範囲(縦)を
//敵がブロックにあたる範囲
if(hitblocktop == -1 && ene[num].y -18>=block[k][i][j].hit.lt.y &&
ene[num].y -18<=block[k][i][j].hit.rb.y){
hitblocktop = i;
break;
}
if(ene[num].y +15>=block[k][i][j].hit.lt.y &&
ene[num].y +15<=block[k][i][j].hit.rb.y){
hitblockbottom = i;
break;
}
↓hitblocktop
□
□ ○←敵
□
↑hitblockbottom
というような感じです。
そして,ブロックと敵の衝突判定ですが,今敵のx座標がblock[k][j]の間にあるとき
左右(block[k][j-1],block[k][j+1])との衝突判定を行うように
if(i>= hitblocktop && i<= hitblockbottom){
if(block[k][i][j].flag == TRUE){
if(ene[num].x>=block[k][i][j].hit.lt.x &&
ene[num].x <=block[k][i][j].hit.rb.x){
if((ene[num].spd <0 &&
enehitblock.lt.x <= block[k][i-1][j].hit.rb.x)||
(ene[num].spd > 0 &&
enehitblock.rb.x >= block[k][j+1][j].hit.lt.x)){
ene[num].spd *= -1;
}
}
}
}
速さがene[num].spd *= -1;となるようにしてあります。
しかし,敵がブロックに衝突しても移動方向を変えませんでした。
一応,ene[num].spd *= -1;のところにブレークポイントをおいてデバッグを行ったとき,止まったので
判定はされてるようです。