・概要

 出現したバスターの処理に関して解説する。

↓バスターのMC(3種類)。hitrectは実際のゲーム画面では非表示にしている。

 「バスターの消滅エフェクト」関連は、アクションと直接的に関係がないので、解説は省略する。

・loadの処理

・・バスターの番号

 バスター発射の「・バスター発射」の「・・バスターの出現」の際に伝達される。
 この値は、「出現判定のリセット」などに用いられる。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
	number_zero_buster
 

・・バスターの種類

 バスター発射の「・バスター発射」の「・・バスターの出現」の際に伝達される。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
	name_zero_buster
 

・・エレメントアタッチメント

 ここでは、エレメントアタッチメントを扱わないので、バスターの属性は無属性となる。

 エレメントアタッチメントに関しては、ボディチップの「・エレメントアタッチメント」を参照。

・・バスターの消滅判定

 バスターは敵・地形の影響で消滅する。「バスターの消滅判定」は、その際の判定となる。
 バスターの消滅判定のタイプには複数の種類がある。通常のバスターの場合は「"normal"」となる。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
	zero_buster_vanish=0
	zero_buster_vanish_type="normal"	//バスターの消滅判定のタイプ(通常)
 

・・バスターの初期位置

 バスター発射の「・バスターの方向、バスターの初期位置」を参照。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
	_parent._x=_root.initial_zero_buster_x;_parent._y=_root.initial_zero_buster_y	//バスターの初期位置
 

・・バスターの方向、バスターの攻撃の方向

 「バスターの方向」に関しては、バスター発射の「・バスターの方向、バスターの初期位置」を参照。
 「バスターの攻撃の方向」に関しては、連鎖値、属性、攻撃の方向・角度の「・攻撃の方向による符号の補正」の「・・バスターの攻撃の方向」を参照。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
	zero_buster_direction=_root.initial_direction_zero_buster	//バスターの方向
	zero_buster_attack_direction=zero_buster_direction	//バスターの攻撃の方向
 

・・スケール変化

 チャージバスターに関しては、スケール変化の処理を行う。これは、必須の処理ではない。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
	if(name_zero_buster!="zero_buster_normal"){_parent._xscale=10*zero_buster_direction}	//チャージバスターの場合,スケール変化
	else{_parent._xscale=100*zero_buster_direction}
 

・・速度、ダメージ、連鎖値など

 各バスターの、速度、ダメージ、連鎖値などを設定している。連鎖値に関しては、連鎖値、属性、攻撃の方向・角度の「・連鎖値」を参照。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
	if(name_zero_buster=="zero_buster_normal"){velocity_zero_buster=5*zero_buster_direction;zero_attack_damage=2;zero_attack_chain_boss=101;zero_buster_vanish_name="zero_buster_vanish_normal"}
︙
	zero_attack_chain=1
 
 例えば、バスター(非チャージ)の場合は、以下の通りとなる。
・「velocity_zero_buster=5*zero_buster_direction」:バスターの速度を設定する。
・「zero_attack_damage=2」:バスターのダメージを設定する。
・「zero_attack_chain_boss=101」:バスターの連鎖値(ボス)を設定する。
・「zero_attack_chain=1」:バスターの連鎖値(ボス以外)を設定する。

 (loadの処理の時点で)ゼロにダッシュ属性がある場合、ダメージを増加させる。原作においては、「地上におけるダッシュ非チャージバスター」のみにこの処理を行っている(?)。
 EXバスターにおいては、この処理を行っていない。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
	if(_root.zero_dash==1){zero_attack_damage+=1}	//ダッシュ属性がある場合,ダメージを増加させる
 

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

 「・各種地形との接触判定」を参照。
 各種地形との接触判定に、初期値である「0」を代入しておく。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
	for(i=1;i<=_root.i_landform_name_max;i++){this["hit_"+_root.landform_name_list[i-1]]=0}	//各種地形
 
	buster_hit_landform=1	//地形接触判定の設定(バスター(1))
 

・スケール変化

 「・loadの処理」の「・・スケール変化」において縮小させたチャージバスターを、出現直後から徐々に拡大し、元のスケールに戻す。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
		if((zero_buster_direction==1 and _parent._xscale<100) or (zero_buster_direction==-1 and _parent._xscale>-100)){_parent._xscale+=10*zero_buster_direction}	//スケール変化
 

・移動

 バスターを移動させる。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
		_parent._x+=velocity_zero_buster	//移動
 

・敵との接触判定

・・概要

 接触判定の基礎に関しては、接触判定を参照。
 ここでは、敵との接触判定があった場合の処理に関して解説する。

・・敵の情報の取得

 攻撃関連の処理の前に、敵の情報(「敵の属性」「ボス判定」「敵の連鎖値」など)の取得を行う。念の為、設定されていない場合の処理も行っている。

ASのファイル:zero_buster_attack_enemy.txt
 
enemy=_root.board["enemy_"+i]	//参照先を変数に保存
 
enemy_element=enemy.enemy_hitrect.enemy_element	//敵の属性
if(enemy_element==undefined){enemy_element="none"}	//敵の属性が設定されていない場合
︙
 

・・攻撃関連の処理


・・敵への情報伝達

 敵に、バスターの「属性」「ダメージ(+攻撃の方向)」「攻撃の角度」「連鎖値」を伝達する
 「現在のフレームにおける敵の連鎖値」よりも「ゼロの攻撃の連鎖値」が大きい場合にのみ伝達している。これは、敵に複数の攻撃が同時にヒットした場合に、「より連鎖値が大きい攻撃」を優先させるための処理となる。

ASのファイル:zero_buster_attack_enemy.txt
 
if((boss_identify==1 and enemy_chain<zero_attack_chain_boss) or (boss_identify==0 and enemy_chain<zero_attack_chain)){
	enemy.enemy_hitrect.enemy_hit_attack_type="buster"	//攻撃の種類}
︙
 

・・バスターの消滅判定

 バスターは、敵との接触により、消滅する場合がある(原作準拠)。
 「バスターの消滅判定のタイプ」が「通常」の場合、条件は、「敵の残りライフがバスターのダメージ(属性による補正後)以上の場合」「敵の無敵時間の判定がある場合」「敵のガード判定がある場合」の3種類となる。

↓「敵の残りライフがバスターのダメージ(属性による補正後)以上の場合」のバスターの消滅判定。

 敵の残りライフがバスターのダメージ(属性による補正後)以上の場合は、バスターが消滅するが、敵の残りライフがバスターのダメージ(属性による補正後)未満になると、バスターが消滅しない。

ASのファイル:zero_buster_attack_enemy.txt
 
if(zero_buster_vanish_type=="normal"){	//バスターの消滅判定のタイプが「通常」の場合
	if(Math.abs(enemy_hit_attack)<=_root.enemy_identify[i-1] or enemy_invincible==1 or enemy_guard==1){zero_buster_vanish=1}	//敵の残りライフがバスターのダメージ(属性による補正後)以上の場合,敵の無敵時間の判定がある場合,敵のガード判定がある場合,バスターの消滅判定
}
 
・「Math.abs(enemy_hit_attack)」:バスターのダメージの絶対値(属性による補正後)。
・「_root.enemy_identify[i-1]」:敵の残りライフ。
・「enemy_invincible==1」:敵の無敵時間の判定がある。
・「enemy_guard==1」:敵のガード判定がある。
・「zero_buster_vanish=1」:バスターの消滅判定を付加する。

 「敵の無敵時間の判定がある場合」に関しては、「ボスのライフが少なくなっている、かつ、ボスが無敵時間、かつ、ボスの連鎖値がバスターの連鎖値よりも高い」場合に、「ボスのライフよりもダメージの高いバスター」を貫通させないようにするための措置となる。

↓「敵の無敵時間の判定がある場合」のバスターの消滅判定。ボスのライフを極端に低く設定している。

 ゼロのジャンプセイバーによりボスのライフが「1」となり、フルチャージバスターのダメージ未満になるが、無敵時間のため、貫通できない。

・画面外消滅判定

 バスターは、画面外に出ると消滅する(原作準拠)。
 ここでは、マスクのMC(画面の大きさと同じ大きさ)との接触判定を取得している。マスクのMCに関しては、マスクを参照。

↓画面外消滅判定。分かりやすくするため、マスクを適用していない。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
		if(this.hitTest(_root.mask)==false){_root.zero_buster_identify[number_zero_buster-1]="none";_parent.removeMovieClip()}	//出現判定をリセット,MCを削除
 
・「_root.mask」:マスクのMC。
・「if(this.hitTest(_root.mask)==false)」:バスターのhitrectとマスクのMCの接触判定がない場合(=画面外に出た場合)。
・「_root.zero_buster_identify[number_zero_buster-1]="none"」:バスターの出現判定をリセット。
・「_parent.removeMovieClip()」:バスターのMCを削除。

・各種地形との接触判定

 詳細は、地形との接触判定の「・「接触判定」のみ」を参照。
 傾斜床傾斜天井との接触判定に関しては、傾斜床の「・バスターと傾斜床との接触判定」、傾斜天井の「・バスターと傾斜天井との接触判定」を参照。

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

 各種の地形(壁・床・天井・傾斜床…)との接触判定がある場合、消滅判定を付加する

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
		if(hit_wall_right!=0 or hit_wall_left!=0 or hit_sloped_floor!=0 or hit_floor!=0 or hit_sink!=0 or hit_sloped_ceiling!=0 or hit_ceiling!=0){zero_buster_vanish=1}	//各種の地形との接触判定がある場合,バスターの消滅判定
 

・バスターの消滅

 バスターの消滅判定がある場合は、バスターの出現判定をリセットし、バスターのMCを削除する。

ASのファイル:zero_buster_normal_semicharge_fullcharge.txt
 
		if(zero_buster_vanish==1){	//バスターの消滅判定がある場合_root.zero_buster_identify[number_zero_buster-1]="none";_parent.removeMovieClip()	//出現判定をリセット,MCを削除
		}
 
・「_root.zero_buster_identify[number_zero_buster-1]="none"」:バスターの出現判定をリセット。
・「_parent.removeMovieClip()」:バスターのMCを削除。

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