・概要
出現したバスターの処理に関して解説する。
↓バスターの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