1週間無利息キャッシング「ノーローン」

憧れの一戸建てを1000万円で?!

つらい食事制限やつらい運動をする前に【バランスゲット】

■旧FC2アクセス解析はサービスが終了しました。
新アクセス解析の登録、旧解析タグの削除方法はこちら [PR] ×

シューティングゲームの館

今日 昨日


26. 螺旋ショット。



このショットはこのようなショットです。



弾は一度に最高200発まで出せますが、今回はその最大数を使用します。

これは毎カウントごとに発射しています。

このショットのアルゴリズムは、

毎回よばれるごとに、

 ・ 発射フラグをたてて

 ・ 敵の座標をショットの初期座標に代入します。

 ・ atan2関数をもちいて、プレイヤーと敵とのy、x座標からどの方向にいるかラジアンを求めます。

 ・ 前のラジアンより2.0ラジアン増やします。

 ・ 斜辺 * cosでx座標が、斜辺 * sinでy座標が求まります。斜辺はPATTERN1SPEEDでしたね。この値を座標に増やします。

 ・ いつものようにスピードを三角関数で求めます。

毎回2.0ラジアンほど増やしていくことで、徐々に弾が回転して発射されているように見えます。

この事をプログラムで書くとこうなります。

このアルゴリズムをプログラムでかくとこうなります。以前と同じ部分は注釈を書きません。

void EnemyShotPattern6(int i){
        for(int j=0;j<200;j++){
                if(EnemyShot[i].counter==j){
                        EnemyShot[i].EnemyShots[j].flag=1;
                        EnemyShot[i].EnemyShots[j].x=EnemyShot[i].mem_ex;
                        EnemyShot[i].EnemyShots[j].y=EnemyShot[i].mem_ey;
                        if(j==0)//最初だけ、プレイヤーの方向に角度をきめます。
                                EnemyShot[i].Angle[j] = atan2(EnemyShot[i].mem_py-EnemyShot[i].mem_ey,EnemyShot[i].mem_px-EnemyShot[i].mem_ex);
                        else //それいこうは2.0ラジアンずつ増やしていきます。
                                EnemyShot[i].Angle[j] = EnemyShot[i].Angle[j-1]+0.2f;
                        StopSoundMem(sound_enemy_shot[0]);
                        PlaySoundMem(sound_enemy_shot[0],DX_PLAYTYPE_BACK);
                }
                EnemyShot[i].EnemyShots[j].x+=PATTERN1SPEED*cos(EnemyShot[i].Angle[j]);
                EnemyShot[i].EnemyShots[j].y+=PATTERN1SPEED*sin(EnemyShot[i].Angle[j]);
        }
}

戻る                                  次へ
メニューへ戻る


トップページへ

DXライブラリ著作権表示
DX Library Copyright (C) 2001-2006 Takumi Yamada.