ページ 11

龍神録のプログラム:ボムで敵ショットを消すには?

Posted: 2010年2月25日(木) 11:35
by レッドリ
こんにちは、DXライブラリとVC++EE2008で作っています。

私は龍神録で
大きなミサイルが何個も直線状に出るボムを作りました。

http://www.youtube.com/watch?v=TL-1lIzZbPM
この動画の1分10秒とほぼ同じようなボムです。

それで、問題が出てきました。
敵ショットと自機のボムを画像のように判定させようと思い、実装してみましたが上手くいきませんでした。
図は赤がミサイル、水色が敵のショットです。
1つのミサイルに複数の敵ショットが重なった場合、敵ショットを複数消したいのです。
龍神録では下記のようにコードを書いています。
//ショットx,ショットy,被弾物体x,被弾物体y,ショット範囲,被弾物体範囲,ショット速さ,ショット角度
//自機ボムと敵弾が当たったかどうかを判定する
int out_judge_cb_Ebullet(int k,int s,int n){
    if(bom.flag>0){//ボム中
        if(out_judge(
            effect[k].x,effect[k].x,  shot.bullet[n].x,shot.bullet[n].y,
            cbom_range[1],bullet_info[shot.bullet[n].knd].range,
            effect[k].spd,effect[k].mvang)){
            return 1;
        }
    }
    return 0;
}
void cshot_and_enemy(){
    int i,s,n,k;
    for(k=0;k<EFFECT_MAX;k++)
        if(effect[k].flag==2)//ボムはエフェクトのフラグを2にしています
        for(s=0;s<SHOT_MAX;s++)
            if(shot.flag>0)
                for(n=0;n<SHOT_BULLET_MAX;n++)
                    if(shot.bullet[n].flag>0)
                        if(out_judge_cb_Ebullet(k,s,n)==1)
                            shot.bullet[n].flag=0;

}


何度も試しても全然分かりませんでした。
どなたかお助けいただけないでしょうか?
どうかよろしくお願いいたします。 画像

Re:龍神録のプログラム:ボムで敵ショットを消すには?

Posted: 2010年2月25日(木) 13:25
by yu
何がうまくいかなかったのか分かりませんが、とりあえず
if(out_judge(
            effect[k].x,effect[k].y
じゃないですか?

Re:龍神録のプログラム:ボムで敵ショットを消すには?

Posted: 2010年2月25日(木) 16:58
by レッドリ
できました(笑)
yuさん、ありがとうございます。