>> シューティングゲーム作成入門トップに戻る

敵の移動パターンを増やそう

今回は敵の移動パターンを増やしてみましょう。

今回修正するのは、ENEMYクラスのMove関数です。
単純に移動パターン用のコードを増やすだけです。
以下のコードを見てください。

void ENEMY::Move()
{
	//まだ生きてるか画面内に居るときだけ処理
	if(!deadflag){
		switch(m_pattern){
			//途中で止まって、そのまま後ろに帰るパターン
			case 0:

				//出てきてから止まる時間までの間なら下に移動
				if(in_time<g_count && g_count<stop_time){
					y+=2;
				//帰還時間を過ぎたら戻る。
				}else if(g_count>out_time){
					y-=2;
				}
				break;

			//そのまま止まらずに下に行くパターン
			case 1:

				if(in_time<=g_count){
					y+=2;
				}

				break;

			//ちょっとずつ左に移動しながら消えていく
			case 2:
				if(in_time<=g_count){
					y+=1;
					if(count%10==0){
						x-=1;
					}
				}
				break;

			//ちょっとずつ右に移動しながら消えていく
			case 3:
				if(in_time<=g_count){
					y+=1;
					if(count%10==0){
						x+=1;
					}
				}
				break;

		}
		//画面からはみ出したら、deadflag(はみ出すか死ぬかのフラグ)をtrueにする。
		if(g_count>=stop_time){
			if(OutCheck()){
					deadflag=true;
			}
		}
		++count;
	}
}


とりあえず4パターンだけ作成しました。
移動パターン0は今までどおりなので省略します。

移動パターン1ですが、g_countがin_timeを越えたら、yを毎ループごとに2だけ増加するようにしています。
この処理しか書いていないので、yは画面下までとまらずに移動していくことになります。

移動パターン2はg_countがin_timeを越えたら、毎ループごとにyを1だけ増加するようにしてます。
さらにcountを10で割って余りがゼロの時、つまり10ループに一回はx座標を-1するようにしています。
こうすることで若干左に移動しながら、止まらずに下に移動していく動きが表現できます。

移動パターン3は、移動パターン2とほぼ同じで、左ではなく右に移動していくようにしています。

switch文の下に書いてある、if文の処理は画面からはみ出したときにdeadflagをtrueにする処理です。
これをしておかないと、いつまでも敵クラスが残ったままになり、
当たり判定の時や描画時に無駄な処理が発生してしまうからです。
g_countがstop_time以上の時だけ実行するようにしているのは、
停止時間以降ならば、確実に画面の中にいるからです。
この条件をin_time以上としてしまうと、敵が出現直後の時はまだ画面の外にいるので、
その際に条件にひっかかってしまう可能性があるからです。

なおここで実行しているOutCheckという関数は以下のような関数です。

bool ENEMY::OutCheck()
{
	if(x<-50 || x>520 || y<-50 || y>530){
		return true;
	}else{
		return false;
	}
}

単純に敵のx座標とy座標が画面内にあるかを判定しているだけです。
画面の外にあればtrue,画面内にあれば、falseを返すようにしています。

これを上記Move関数で実行して、結果がtrueならdeadflagをtrueにするようにしています。
一度trueにしてしまえば、Move関数内の処理はdeadflagがfalseのときだけ処理するようにしているので、
もう無駄な移動処理は実行されなくなります。

これらの移動パターンを使って下記のような敵データを作りました。

これを使って、プログラムを実行すると以下の動画のように敵が出現します。

さっきより移動パターンが増えてますよね?
今回説明した移動パターンはただのサンプル程度と思ってください。
自分で色々とコードを変更して、それぞれ好きな動作をさせてみてください。

今回の説明は以上です。
次回は敵のショットパターンを増やしてみましょう。

>> 【敵のショットパターンを増やそう】に進む
>> シューティングゲーム作成入門トップに戻る