・概要

 敵に関する記述の基礎は、操作キャラクターとほぼ同様となる。
 ここでは主に、敵の特有の処理に関して解説する。

・loadの処理

・・敵の番号、敵の名前

 「敵の番号」は、敵の出現時に割り当てられる、敵の固有の番号のことである。
 「敵の名前」は、敵の破壊の際に用いられる場合がある。

ASのファイル:敵のAS
 
	number_enemy
 
	enemy_name="…"
 

・・位置、速度、加速度、方向、距離など

 位置、速度、加速度、方向、距離などの設定を行う。

・・スケール変化、角度、回転、透明度など

 スケール変化、角度、回転、透明度などの設定を行う。

・・ライフ、属性など

 ライフ、属性などの設定を行う。
 このゲームでは、敵の出現判定用の配列にライフを代入している。破壊不可能、かつ、バスターが貫通しない敵には「100」を代入している。また、バスターが貫通する敵には「0」を代入している。

ASのファイル:敵のAS
 
	_root.enemy_identify[number_enemy-1]=…	//敵の出現判定用の配列にライフを代入する
 
	enemy_element="…"	//敵の属性
 

・・破壊、消滅関連

 「敵の破壊判定」の初期値の設定や、「破壊判定がある場合のエネミーカウントの増加」の設定を行う。

ASのファイル:敵のAS
 
	enemy_break="none"	//敵の破壊判定
 
	enemy_count_plus=…	//破壊判定がある場合のエネミーカウントの増加(0:増加しない,1:増加する)
 

・・敵の攻撃のダメージ、敵の攻撃の連鎖値など

 「敵の攻撃のダメージ(敵の接触ダメージ)」「敵の攻撃の連鎖値」を設定する。なお、一部の敵は、条件により、「敵の攻撃のダメージ」が変化する場合がある。

ASのファイル:敵のAS
 
	enemy_attack_damage=…	//敵の攻撃のダメージ
	enemy_attack_chain=…	//敵の攻撃の連鎖値
 

・・攻撃との接触判定、連鎖値、無敵時間など


・・エフェクト関連

 「敵の各種エフェクト判定」「敵の属性エフェクト判定」の初期値を代入する。また、敵の各種エフェクトのスケールを設定する。

ASのファイル:敵のAS
 
	enemy_effect="none"	//敵の各種エフェクト判定
	enemy_element_effect="none"	//敵の属性エフェクト判定
 
	enemy_effect_scale=…	//敵の各種エフェクトのスケール
 

・・各種地形などとの接触判定

 「・各種地形などとの接触判定」も参照。

 各種地形やゼロとの接触判定の初期値を代入している。また、「地形移動の判定」などに関して、ゼロと同様の処理を行っている。

ASのファイル:敵のAS
 
	#include "zero_AS/hit_landform/enemy_load_hit_landform_zero.txt"
 

・・その他

・アクションの状態:一部の敵は、ゼロと同様に、「アクションの状態」を設定している。
・アクションに関するカウント(時間)、アクションに関するカウント(回数):上と同様。
・幅、高さ:hitrectの「・hitrectの端の位置・幅・高さ」を参照。
・ボス関連:ボスの「・loadの処理」を参照。

・敵と攻撃との接触判定がある場合の処理


・敵からのアイテムドロップ

 アイテムの出現・消滅の「・敵からのアイテムドロップ」を参照。

・敵のエフェクトに関する処理

・・概要

 敵と攻撃との接触判定がある場合の処理において、エフェクト判定が付加された場合は、エフェクトを付加する
 このゲームは無音のため、これらのエフェクトにより、「敵にダメージが入ったか否か」「弱点属性か否か」を認識できるようにしている。

・・各種エフェクト

 ダメージエフェクトやガードエフェクトを付加する。

↓ダメージエフェクト、ガードエフェクト。

ASのファイル:enemy_effect.txt
 
if(enemy_effect!="none"){	//エフェクト判定がある場合
	_root.board.attachMovie(enemy_effect+"_effect",enemy_effect+"_effect_"+number_enemy,_root.depth_enemy_effect+number_enemy)	//エフェクトを付加
︙
	enemy_effect="none"	//エフェクト判定をリセット
}
 

・・属性エフェクト

 属性エフェクトを付加する。エフェクトのAAは、「属性エフェクト判定」に合わせて変化させている。
 連鎖値、属性、攻撃の方向・角度の「・属性」も参照。

ASのファイル:enemy_effect.txt
 
if(enemy_element_effect!="none" and enemy_element_effect!=undifined){	//属性エフェクト判定がある場合
	_root.board.attachMovie("enemy_element_effect","enemy_element_effect_"+number_enemy,_root.depth_enemy_element_effect+number_enemy)	//属性エフェクトを付加
︙
	enemy_element_effect="none"	//属性エフェクト判定をリセット
}
 

・敵の破壊判定がある場合の処理

 敵の破壊判定がある場合は、以下の処理を行う。
・破壊用のMCを出現させる。なお、出現させないタイプの敵もいる(徐々に透明化して消滅するなど)。
エネミーカウントを増加させる(増加するタイプの敵のみ)
・ボス判定がある場合、ボスのライフを0にする。
敵の出現判定用の配列において、出現判定をリセットする
・MCを削除する。

↓破壊用のMCの付加。

ASのファイル:enemy_break.txt
 
if(enemy_break!="none"){	//敵の破壊判定がある場合
	_root.board.attachMovie(enemy_name+"_break_"+enemy_break,[enemy_name+"_break_"+enemy_break+"_"+number_enemy],_root.depth_enemy_break+number_enemy)	//破壊用のMCを出現させる
︙
 
	if(enemy_count_plus==1){_root.result_enemy_count++}	//エネミーカウントを増加させる(増加するタイプの敵のみ)
	if(boss_identify==1){_root.boss_life=0}	//ボス判定がある場合,ボスのライフを0にする
	_root.enemy_identify[number_enemy-1]="none"	//出現判定をリセット
	_parent.removeMovieClip()	//MCを削除
}
 

・無敵時間(敵)

 無敵時間(敵)を参照。

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

 敵・アイテムの出現判定用のMCとの接触判定がない場合は、出現判定をリセットし、MCを削除する
 敵の出現・消滅の「・敵の出現用のhitrectからの出現」の動画も参照。

ASのファイル:敵のAS
 
		if(_parent.hitTest(_root.enemy_item_appearance_hitrect)==false){_root.enemy_identify[number_enemy-1]="none";_parent.removeMovieClip()}	//敵・アイテムの出現判定用のMCとの接触判定がない場合,出現判定をリセット,MCを削除
 

・各種地形などとの接触判定

・・地形との接触判定

 地形関連の項目を参照。

 処理の例は、以下の通りとなる。

ASのファイル:enemy_aramaki_ball.txt
 
			#include "zero_AS/hit_landform/hit_floor.txt"
			if(hit_floor!=0){
				velocity_enemy_y=0
				_parent._y-=hit_y_floor	//位置調整
			}
 
 上記の例では、床との接触判定を取得し、床との接触判定がある場合は、y方向の速度を0にして、位置調整を行っている。他の地形に関しても、類似した処理を行っている。

 一部の敵は、ゼロと同様の処理を行っている。

ASのファイル:enemy_megaman.txt
 
		#include "zero_AS/hit_landform/enemy_hit_landform_universal_1.txt"
 

・・ゼロとの接触判定

 各種地形・敵との接触判定の「・敵との接触判定」の「・・接触判定(敵側)」を参照。

・頻出する処理

・・ゼロの方向を向く

 ゼロとの位置関係によって敵の方向を変化させる

↓メガマンの例。ゼロに向かって振り向く。

ASのファイル:enemy_megaman.txt
 
		if(_root.zero_x<_parent._x){enemy_direction=-1}	//ゼロの方向を向く
		else{enemy_direction=1}
 

・・ゼロとの距離

 ゼロとの距離に応じて、処理を変化させる

↓モララーの例。前方・近距離にゼロがいる場合は、「パンチ前動作」に移行する。

ASのファイル:enemy_moralar.txt
 
			if(((enemy_direction==1 and _root.zero_x>_parent._x) or (enemy_direction==-1 and _root.zero_x<_parent._x)) and Math.abs(_root.zero_x-_parent._x)<=50 and Math.abs(_root.zero_y-_parent._y)<=50){	//前方・近距離にゼロがいる場合}
 

・・ゼロとの角度の算出

 ゼロとの角度を算出する。そして、その角度に速度を付加させるなどの処理を行う。参考サイト(https://hakuhin.jp/as/shot.html)。

↓ビッタアクアのハートの例。ゼロとの角度を算出し、その角度に速度が付加される。

ASのファイル:enemy_bitta_aqua_heart.txt
 
		radian_enemy=Math.atan2(_root.zero_y-_parent._y,_root.zero_x-_parent._x)	//角度を算出
		velocity_enemy_x=1.5*Math.cos(radian_enemy);velocity_enemy_y=1.5*Math.sin(radian_enemy)	//速度を付加
 

・・乱数でアクションを選択

 乱数でアクションを選択する。参考サイト(https://hakuhin.jp/as/random.html)。

↓ダークマターの例。乱数で「ショットに移行」「爆弾に移行」のいずれかが選択される。

ASのファイル:enemy_dark_matter.txt
 
				enemy_random=Math.floor(Math.random()*2)	//乱数でアクションを選択
				if(enemy_random==0){enemy_action="shot"}	//ショットに移行
				else{enemy_action="bomb"}	//爆弾に移行
 

・・ガード判定

 敵がガード状態の場合は、バスターの貫通を不可能とするために、「ガード判定」を付加する。そして、ガード状態ではなくなった場合は、「ガード判定」を解除する
 バスターの消滅に関しては、バスターの「・敵との接触判定」の「・・バスターの消滅判定」を参照。

↓シグマの例。処理を行わない場合。バスターが貫通する。

↓シグマの例。処理を行う場合。バスターの貫通が不可能となる。

ASのファイル:enemy_sigma.txt
 
			if(count_enemy_time==1){enemy_guard=1}	//カウントが1の場合,ガード判定を付加
			else if(count_enemy_time==count_enemy_time_guard_max){	//カウントが最大値の場合
︙
				enemy_guard=0	//ガード判定を解除}
 

・・ある程度透明化した場合、敵の攻撃のダメージを0にする

 ある程度透明化した場合、敵の攻撃のダメージを0にする

↓ゼロ(敵)の炎の例。処理を行わない場合。視認し難いが、炎のMCが残っており、そのダメージを受けてしまう。

↓ゼロ(敵)の炎の例。処理を行う場合。

ASのファイル:enemy_zero_fire.txt
 
		if(_parent._alpha<=20){enemy_attack_damage=0}	//ある程度透明化した場合,敵の攻撃のダメージを0にする
 

・・初期に接触判定がある地形の情報の取得

 「初期に接触判定がある地形」の情報の取得を行う。また、それにより処理を変化させる

↓「カサカサの敵の出現用のhitrect」の配置の例。

↓カサカサの例。「初期に接触判定がある地形」により、処理(方向など)が変化する。しかしキモいな…。

 「初期に接触判定がある地形」が「床」の例を示す。他の地形に関しても、類似した処理を行っている。

ASのファイル:enemy_kasakasa.txt
 
	#include "zero_AS/hit_landform/hit_floor.txt"
	if(hit_floor!=0){
		enemy_initial_landform="floor"
		#include "zero_AS/hit_landform/hit_floor.txt"
		_parent._y-=hit_y_floor	//位置調整
		landform_xmin_initial=landform_xmin;landform_xmax_initial=landform_xmax
	}
 
・「enemy_initial_landform」:初期に接触判定がある地形。

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