・概要

 敵の出現に関しては、「敵からの出現」と「敵の出現用のhitrectからの出現」の2つのパターンがある。
 敵の消滅に関しては、「ゼロなどの攻撃による敵の破壊」と「敵・アイテムの出現判定用のMCとの接触判定がない場合の消滅」の2つのパターンがある。

 「出現」に関する処理の基礎に関しては、「出現」に関する処理を参照。
 「ループの終値」の意味に関しては、基礎の「・頻出する表現(AS)」の「・・ループの終値」を参照。

・敵からの出現

・・概要

 「敵からの出現」のパターンに関して解説する。
 ここでは、例として、「シグマからのシグマショットの出現」を解説する。

↓シグマからのシグマショットの出現。

 「出現させる敵の名前」を設定し、「敵の出現」の処理を行う。そして、敵の位置調整を行う。

ASのファイル:enemy_sigma.txt
 
			enemy_appearance_name="enemy_sigma_shot"
			#include "zero_AS/enemy/enemy_appearance.txt"
			enemy._x=_parent._x;enemy._y=_parent._y-15	//敵の位置調整
 
・「enemy_appearance_name」:出現させる敵の名前。

・・敵の出現

 「出現させる敵の名前」において設定した敵を出現させ、「敵の番号」を伝達する

ASのファイル:enemy_appearance.txt
 
for(i=1;i<=_root.i_enemy_max;i++){	//敵の出現用のループ
	if(_root.enemy_identify[i-1]=="none"){	//敵の出現判定用の配列に空きがある場合
		_root.board.attachMovie(enemy_appearance_name,["enemy_"+i],_root.depth_enemy+i)	//敵を出現させる
		enemy=_root.board["enemy_"+i]	//参照先を変数に保存
		enemy.enemy_hitrect.number_enemy=i	//敵の番号を伝達
		_root.enemy_identify[i-1]=0	//敵の出現判定用の配列にライフの初期値(0)を代入する
		break	//ループを離脱
	}
}
 

 「敵の出現判定用の配列にライフの初期値(0)を入れる」の処理は不要と思われるが、念の為に行っている。

・敵の出現用のhitrectからの出現

・・概要

 「敵の出現用のhitrectからの出現」のパターンに関して解説する。

↓敵の出現用のhitrectからの出現。荒巻ボールの例。「ゼロなどの攻撃による敵の破壊」と「敵・アイテムの出現判定用のMCとの接触判定がない場合の消滅」も示している。

・・loadの処理

・・・出現させる敵の名前

 出現させる敵の名前を、hitrectのインスタンス名から取得する。

↓敵の出現用のhitrect。荒巻ボールの例。hitrect(灰色の小さい正方形)のインスタンス名を「aramaki_ball」と設定している。

ASのファイル:enemy_appearance_hitrect.txt
 
	enemy_appearance_name="enemy_"+this._name	//出現させる敵の名前を取得
 

・・・敵の出現判定、敵の番号

 「・・敵の出現」などを参照。

ASのファイル:enemy_appearance_hitrect.txt
 
	enemy_appearance=0	//敵の出現判定
	number_enemy=0	//敵の番号の保存用
 

・・・地形移動

 「敵の出現用のhitrect」を「地形」と見なして、移動させるための処理。詳細は、地形移動を参照。

↓「敵の出現用のhitrect」に地形移動を適用。

ASのファイル:enemy_appearance_hitrect.txt
 
︙(省略)
 

・・敵の出現

 「敵・アイテムの出現判定用のMC」との接触判定があり、敵の出現判定がない場合は、敵の出現に関する処理を行う。「・敵からの出現」も参照。
 同時に、「(出現させた)敵の番号」を保存し、「敵の出現判定」を付加する。

ASのファイル:enemy_appearance_hitrect.txt
 
	if(this.hitTest(_root.enemy_item_appearance_hitrect)){	//敵・アイテムの出現判定用のMCとの接触判定がある場合
		if(enemy_appearance==0){	//敵の出現判定がない場合
			#include "zero_AS/enemy/enemy_appearance.txt"
			enemy._x=_parent._x;enemy._y=_parent._y	//敵の位置調整
			number_enemy=i	//敵の番号を保存
			enemy_appearance=1	//敵の出現判定
		}
	}
 

・・敵の出現判定のリセット

 「敵・アイテムの出現判定用のMC」との接触判定がなく、出現させた敵が消滅している場合は、敵の出現判定をリセットする。この処理により、再び敵を出現させることが可能となる

ASのファイル:enemy_appearance_hitrect.txt
 
	else{	//敵・アイテムの出現判定用のMCとの接触判定がない場合
		if(number_enemy==0){enemy_appearance=0}	//出現させた敵が消滅している場合,敵の出現判定をリセット
	}
 

・・敵の番号のリセット

 出現させた敵が消滅した場合は、敵の番号をリセットする。この処理により、「・・敵の出現判定のリセット」の処理が行われることになる。

ASのファイル:enemy_appearance_hitrect.txt
 
	if(number_enemy!=0 and _root.enemy_identify[number_enemy-1]=="none"){number_enemy=0}	//出現させた敵が消滅した場合,敵の番号をリセット
 

・ゼロなどの攻撃による敵の破壊

 の「・敵の破壊判定がある場合の処理」を参照。

・敵・アイテムの出現判定用のMCとの接触判定がない場合の消滅

 の「・敵・アイテムの出現判定用のMCとの接触判定がない場合の消滅」を参照。

・「ループの終値(敵)」の補正

 ボードにおいて、「ループの終値(敵)」の補正を行っている

ASのファイル:board_enemy_reset.txt
 
for(i=_root.i_enemy_max;i>=1;i--){
	if(_root.enemy_identify[i-1]!="none"){	//敵の出現判定が埋まっている場合
		_root.i_enemy=i	//ループの終値を最大の番号に合わせて補正
		break	//ループを離脱
	}
	if(i==1){_root.i_enemy=1}	//ループの終値を最大の番号に合わせて補正(i=1の場合)
}
 
 「_root.enemy_identify」が埋まっている最大の番号を、「_root.i_enemy_max」の値から遡って検索し、「_root.i_enemy」(「ループの終値(敵)」)を最大の番号に合わせて補正している。

↓「ループの終値(敵)」の補正の例。

 流れとしては、以下の通りとなる。
・敵が5体出現(出現順に「enemy_1」~「enemy_5」)し、「_root.enemy_identify」の該当する箇所が埋まる。「_root.i_enemy」は、徐々に増え、「5」になる。
・「enemy_5」が破壊される。上記の処理の結果、「_root.i_enemy」は「4」に補正される。
・「enemy_3」が破壊される。ただし、「enemy_4」が残っているため、上記の処理をしても「_root.i_enemy」は「4」のままとなる。
・「enemy_4」が破壊される。上記の処理の結果、「_root.i_enemy」は「2」に補正される。
・「enemy_1」が破壊される。ただし、「enemy_2」が残っているため、上記の処理をしても「_root.i_enemy」は「2」のままとなる。
・「enemy_2」が破壊される。上記の処理の結果、「_root.i_enemy」は「1」に補正される。

最終更新:2020年12月19日 09:44