ブロック崩し
Posted: 2013年6月03日(月) 21:36
お久しぶりです。
あれから、ステージをいくつか増やしました。
今まで気づかなかったのですが、ブロックとボールの当たり判定を変えてから、
敵と必殺技の判定がされなくなってしまっていました。
必殺技と四角の当たり判定の関数は
一応、必殺技1のほうのreturn FALSE;のところにブレークポイントをおいて実行すると
止まるのでif(HitRectAndRect(sp1hit, rectin)== TRUE)がちゃんと判定されていないのだと思います。
また、なぜかブロックのほうはちゃんと判定されるため、rectinに敵の当たり判定がちゃんと入ってないのでは
ないかと思っているのですが、よくわかりません。
一応、ソースファイルを下記のサイトにアップしました。パスワードは「YT2013」です。
http://www1.axfc.net/uploader/so/2923367
ball.cppとbar.cppの関数はブロックにボールがあたったときの動きを正常にするためにGame.cppで使うように直しましたが、special.cpp内の関数はそれには関係なかったため、そのままにしています。同じように直したほうがよろしいでしょうか。そのままにしてある別の理由として、Game.cppの行数がとても長くなってしまう、また、例えば敵の計算の関数内の仮引数が敵にもよりますが、多くて4つも使用しています。これにさらに必殺技の内容まで加わるととても多くなってしまうと思っています。
あれから、ステージをいくつか増やしました。
今まで気づかなかったのですが、ブロックとボールの当たり判定を変えてから、
敵と必殺技の判定がされなくなってしまっていました。
必殺技と四角の当たり判定の関数は
bool HitRectAndSp(Rect2D rectin){
//必殺技1
if(spstate == Sp1State1){
if(HitRectAndRect(sp1hit, rectin)== TRUE)
return TRUE;
else
return FALSE;
}
//必殺技3
if(spstate == Sp3State2 ){
for(int i = 0; i<3;i++){
if(HitRectAndRect(sp2hit[i], rectin)== TRUE)
return TRUE;
else
return FALSE;
}
}
}
止まるのでif(HitRectAndRect(sp1hit, rectin)== TRUE)がちゃんと判定されていないのだと思います。
また、なぜかブロックのほうはちゃんと判定されるため、rectinに敵の当たり判定がちゃんと入ってないのでは
ないかと思っているのですが、よくわかりません。
一応、ソースファイルを下記のサイトにアップしました。パスワードは「YT2013」です。
http://www1.axfc.net/uploader/so/2923367
ball.cppとbar.cppの関数はブロックにボールがあたったときの動きを正常にするためにGame.cppで使うように直しましたが、special.cpp内の関数はそれには関係なかったため、そのままにしています。同じように直したほうがよろしいでしょうか。そのままにしてある別の理由として、Game.cppの行数がとても長くなってしまう、また、例えば敵の計算の関数内の仮引数が敵にもよりますが、多くて4つも使用しています。これにさらに必殺技の内容まで加わるととても多くなってしまうと思っています。