[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
自機と敵の当たり判定を追加しました。
判りやすいように、当たり判定を緑色で囲ってみました。
個数対複数の判定方法は敵の数だけ自機との判定を行えば良いので簡単です。
関数はこんな感じ↓
////////////////////////////自機と敵の当たり判定////////////////////////////////////////////////////////////
//引数 なし
//返値 なし
void hantei_jiki_teki(){
int i;
int atari=0;
int Cr;
Cr = GetColor( 0 , 255 , 0 ) ; // 緑色の値を取得
for(i=0;i<ENEMY;i++){//自機対敵での当たり判定
if(enemy[i].ef==1) {
if( ch.x+JIKI_ATARIHANTEI<(enemy[i].ex+enemy[i].e_sizex)-ENEMY_ATARIHANTEI && enemy[i].ex+ENEMY_ATARIHANTEI<(ch.x+ch.t_sizex)-JIKI_ATARIHANTEI && ch.y+JIKI_ATARIHANTEI<(enemy[i].ey+enemy[i].e_sizey)-ENEMY_ATARIHANTEI && enemy[i].ey+ENEMY_ATARIHANTEI<(ch.y+ch.t_sizey)-ENEMY_ATARIHANTEI) atari=1;else atari=0;
/*当たり判定表示*/
SetDrawBlendMode( DX_BLENDMODE_ALPHA , 100 );
DrawBox( enemy[i].ex+ENEMY_ATARIHANTEI , enemy[i].ey+ENEMY_ATARIHANTEI , enemy[i].ex+enemy[i].e_sizex-ENEMY_ATARIHANTEI , enemy[i].ey+enemy[i].e_sizey-ENEMY_ATARIHANTEI , Cr , TRUE ) ;//当たり判定表示内部
SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
if( atari==1 ) DrawString(300,100,"Hit!",Cr);//当たったときはHit!を表示
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
調子に乗って、敵弾と自機の当たり判定も作ってみたのですが、実装方法は同じはずなのに
上手く動いてくれません・・・
なぜか、敵の奇跡を辿って敵弾の当たり判定が表示されてしまってます。
しょうもない間違いだと思うのですが、何度見直しても判らないんですよね・・・
ただ、C言語の場合は変数の打ち間違いは発生しないので、その辺は何か不具合があった時に
見直しやすいなぁと感じました。まぁ、ちゃんと動いてくれるのがイチバン良いのですが^^;
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!