・概要

 「バスター」は、ゼロの主要な遠距離攻撃のことを指す。「ショット」と表現したほうがより正確と思われる(が、初代ロックマンからの慣例で云々)。

バスター

 出現したバスターの処理に関しては、バスターを参照。
 EXバスターに関しては、EXバスター発射などを参照。

 ここでは、チップやEXバスター関連の記述を、部分的に省略している。

・loadの処理

・・バスターの個数

 「・バスターの個数のカウント」を参照。

ASのファイル:zero_load.txt
 
_root.count_zero_buster=0	//バスターの個数のカウント
count_zero_buster_max=3	//バスターの個数の最大値
 

・・バスターの方向、バスターの初期位置

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

ASのファイル:zero_load.txt
 
_root.initial_direction_zero_buster	//バスターの方向
_root.initial_zero_buster_x;_root.initial_zero_buster_y	//バスターの初期位置
 

・・バスターモーション

 「・バスターモーション」を参照。

ASのファイル:zero_load.txt
 
_root.zero_buster="none"	//バスターモーションの判定
_root.count_zero_buster_time=0	//バスターモーションの時間のカウント
_root.count_zero_buster_time_max=22	//バスターモーションの時間の最大値
 

・・その他

ASのファイル:zero_load.txt
 
_root.zero_buster_identify=["none","none","none","none"]	//バスターの出現判定用の配列
 
zero_buster_appearance="none"	//バスターの出現判定(出現させるバスターの種類)
 
・「_root.zero_buster_identify」:バスターの出現判定用の配列ここに「バスターの種類」が代入される。「・バスターの個数のカウント」にも用いられている。
・「zero_buster_appearance」:バスターの出現判定出現させるバスターの種類に関する情報が代入される

・バスターの方向、バスターの初期位置

・・概要

 バスターの方向、バスターの初期位置に関する値を算出する発射されたバスターは、loadの処理において、これらの値を参照することになる。

バスターの方向、バスターの初期位置。

・・バスターの方向

 基本的には、「ゼロの方向」と「バスターの方向」は一致する。ただし、壁ずり落ちの場合のみ、方向を反転させる。

ASのファイル:zero_buster.txt
 
_root.initial_direction_zero_buster=_root.zero_direction
if(_root.zero_action=="wall_slide"){_root.initial_direction_zero_buster*=-1}	//壁ずり落ちの場合,方向を反転
 

・・バスターの初期位置(x方向)

 アクションの状態によって、位置が異なる。

ASのファイル:zero_buster.txt
 
if(_root.zero_action=="dash" or _root.zero_action=="air_dash"){_root.initial_zero_buster_x=_parent._x+(6+30)*_root.initial_direction_zero_buster}	//ダッシュ,エアダッシュ
else{_root.initial_zero_buster_x=_parent._x+(6+23)*_root.initial_direction_zero_buster}	//その他
 

・・バスターの初期位置(y方向)

 x方向と同様に、アクションの状態によって、位置が異なる。
 歩きの場合は、通常状態などよりも位置を低くしている(原作準拠)。

ASのファイル:zero_buster.txt
 
if(_root.zero_action=="walk"){_root.initial_zero_buster_y=_parent._y+18-22.5}	//歩き
else if(_root.zero_action=="dash" or _root.zero_action=="air_dash"){_root.initial_zero_buster_y=_parent._y+18-19.5}	//ダッシュ,エアダッシュ
else{_root.initial_zero_buster_y=_parent._y+18-25.5}	//その他
 

・バスターモーション

・・概要

 ゼロがバスターを発射した瞬間から、暫くの間、ゼロはバスターを構え続ける。これが、バスターモーションである。
 セイバーモーションの判定がある場合は、セイバーモーションが優先される。

 「バスターモーションの判定」の付加に関しては、「・バスター発射の条件」を参照。

バスターモーション。

ASのファイル:zero_buster.txt
 
if(_root.zero_buster=="shot" and _root.zero_saber=="none"){	//バスターモーションの判定がある場合・セイバーモーションの判定がない場合}
 
・「_root.zero_buster」:バスターモーションの判定。
・「"shot"」:バスターが発射された状態。

・・ジャンプ、ジャンプ開始

 ジャンプジャンプ開始とほぼ同様の処理を行っている。

ASのファイル:zero_buster.txt
 
	if(_root.zero_action=="jump" or _root.zero_action=="jump_start"){
		if(_root.velocity_zero_y<0){_parent.zero_AA.gotoAndStop("zero_AA_buster_jump_up")}	//上昇中
		else{_parent.zero_AA.gotoAndStop("zero_AA_buster_jump_down")}	//下降中
	}
 

・・ダッシュ、エアダッシュ

 ダッシュエアダッシュとほぼ同様の処理を行っている。

ASのファイル:zero_buster.txt
 
	else if(_root.zero_action=="dash" or _root.zero_action=="air_dash"){_parent.zero_AA.gotoAndStop("zero_AA_buster_dash");_parent.zero_AA.zero_AA_buster_dash.gotoAndStop(_root.count_zero_dash)}
 

・・その他

 記述を簡略化するため、その他の場合は、「アクションの状態」を利用して記述している。

ASのファイル:zero_buster.txt
 
	else{_parent.zero_AA.gotoAndStop(["zero_AA_buster_"]+_root.zero_action)}
 

 例えば、「_root.zero_action」が「"normal"」の場合は、以下の通りとなる。

ASのファイル:なし
 
	else{_parent.zero_AA.gotoAndStop("zero_AA_buster_normal")}
 

 この方法は、セイバーモーションにおいても用いている。

・バスターの個数のカウント

 ロックマン系のアクションにおいては、「画面内に同時に出現させることが可能なバスターの個数」に制限がある(大抵の場合は3個)。つまり、バスターの個数が最大値の場合は、バスターを発射することは不可能となる
 そのため、「バスターを発射するための処理」を行う前に、「バスターの個数をカウント」しておく必要がある

バスターの個数のカウント。

ASのファイル:zero_buster.txt
 
_root.count_zero_buster=0	//バスターの個数のカウントをリセットしておく
for(i=1;i<=count_zero_buster_max;i++){
	if(_root.zero_buster_identify[i-1]!="none"){_root.count_zero_buster++}	//バスターの出現判定用の配列が埋められていた場合,バスターの個数のカウントを増加させる
}
 

・バスター発射の条件

・・概要

 「バスター発射の前提となる条件」に関する記述は、以下の通りとなる。

ASのファイル:zero_buster.txt
 
if(_root.count_zero_buster<count_zero_buster_max and _root.zero_saber=="none" and _root.zero_action!="damage" and _root.zero_action!="bind" and _root.event_pause==0){	//バスターの個数のカウントが最大値未満の場合のみ発射可能,セイバーモーション中・被ダメージ状態・拘束状態・イベント停止判定がある場合は不可能}
 
・「_root.count_zero_buster<count_zero_buster_max」:バスターの個数のカウントが最大値未満。「・バスターの個数のカウント」を参照。
・「_root.zero_saber=="none"」:セイバーモーションの判定がない(=セイバーモーション中ではない)。
・「_root.zero_action!="damage" and _root.zero_action!="bind"」:被ダメージ状態・拘束状態ではない
・「_root.event_pause==0」:イベント停止判定がない。ただし、この条件は必須ではないと思われる。

 上記の条件が全て満たされた場合に、バスターの発射が可能となる。

 ここでは、オートチャージ装着中ではない場合(「_root.zero_tip_head_auto_charge_buster==-1」)のみを解説する。オートチャージに関しては、ヘッドチップの「・オートチャージ」を参照。

・・非チャージ判定

 非チャージ判定の場合は、「バスター(非チャージ)」が発射される。「バスター(非チャージ)」は、いわゆる「豆」のことである。

 条件に関する記述は、以下の通りとなる。

ASのファイル:zero_buster.txt
 
	if(keydown_new_buster==1 and _root.zero_charge_buster=="none"){	//非チャージ判定があり,バスターキーの入力がある場合
		_root.zero_buster="shot";_root.count_zero_buster_time=0	//バスターモーションの判定,カウントをリセット
		zero_buster_appearance="zero_buster_normal"	//バスター(非チャージ)}
 
・「keydown_new_buster==1」:バスターキーの入力がある
・「_root.zero_charge_buster=="none"」:非チャージ判定
・「zero_buster_appearance="zero_buster_normal"」:「バスターの出現判定」に、「バスター(非チャージ)」を代入する。

・・セミチャージ判定

 条件に関する記述は、以下の通りとなる。

ASのファイル:zero_buster.txt
 
	else if(((_root.zero_tip_head_auto_charge_buster==-1 and keydown_buster==0) or (_root.zero_tip_head_auto_charge_buster==1 and keydown_new_buster==1)) and _root.zero_charge_buster=="semicharge"){	//セミチャージ判定があり,バスターキーの入力がなくなった場合(セミチャージ判定があり,オートチャージ装着中に,バスターキーの入力がある場合)
		_root.zero_buster="shot";_root.count_zero_buster_time=0	//バスターモーションの判定,カウントをリセット
		zero_buster_appearance="zero_buster_semicharge"	//セミチャージバスター}
 
・「keydown_buster==0」:バスターキーの入力がない
・「_root.zero_charge_buster=="semicharge"」:セミチャージ判定
・「zero_buster_appearance="zero_buster_semicharge"」:「バスターの出現判定」に、「セミチャージバスター」を代入する。

・・フルチャージ判定

 条件に関する記述は、以下の通りとなる。「・・セミチャージ判定」と同様の記述をしている。

ASのファイル:zero_buster.txt
 
	else if(((_root.zero_tip_head_auto_charge_buster==-1 and keydown_buster==0) or (_root.zero_tip_head_auto_charge_buster==1 and keydown_new_buster==1)) and _root.zero_charge_buster=="fullcharge"){	//フルチャージ判定があり,バスターキーの入力がなくなった場合(フルチャージ判定があり,オートチャージ装着中に,バスターキーの入力がある場合)
		_root.zero_buster="shot";_root.count_zero_buster_time=0	//バスターモーションの判定,カウントをリセット
		zero_buster_appearance="zero_buster_fullcharge"	//フルチャージバスター}
 
・「keydown_buster==0」:バスターキーの入力がない
・「_root.zero_charge_buster=="fullcharge"」:フルチャージ判定
・「zero_buster_appearance="zero_buster_fullcharge"」:「バスターの出現判定」に、「フルチャージバスター」を代入する。

・バスター発射

・・概要

 「・バスター発射の条件」の処理において、「バスターの出現判定」に「出現させるバスターの種類」が代入されることにより、バスター発射の処理が行われる。

ASのファイル:zero_buster.txt
 
	if(zero_buster_appearance=="zero_buster_normal" or zero_buster_appearance=="zero_buster_semicharge" or zero_buster_appearance=="zero_buster_fullcharge"){	//バスター(非チャージ),セミチャージバスター,フルチャージバスター}
 

・・バスターの出現

 バスターの出現に関する記述は、以下の通りとなる。「出現」に関する処理とほぼ同様の処理を行っているので、そちらを参照。

ASのファイル:zero_buster_appearance.txt
 
for(i=1;i<=count_zero_buster_max;i++){	//バスターの出現用のループ
	if(_root.zero_buster_identify[i-1]=="none"){	//配列に空きがある場合
		_root.board.attachMovie(zero_buster_appearance,["zero_buster_"+i],_root.depth_zero_buster+i)	//バスターのMCを出現させる
		zero_buster=_root.board["zero_buster_"+i]	//参照先を変数に保存
		zero_buster.zero_buster_hitrect.number_zero_buster=i	//番号を伝達
		zero_buster.zero_buster_hitrect.name_zero_buster=zero_buster_appearance	//バスターの種類を伝達
		_root.zero_buster_identify[i-1]=zero_buster_appearance	//該当する配列を埋める
		break	//ループを離脱
	}
}
 

 ここで、出現させたバスターのhitrectに「バスターの出現判定(バスターの種類)」を伝達しているバスターの「・loadの処理」の「・・バスターの種類」を参照。
 「・バスターの方向、バスターの初期位置」において解説した通り、「バスターの方向」「バスターの初期位置」に関する情報は、伝達する必要がない。

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

 ボディチップの「・エレメントアタッチメント」を参照。

・・バスターの出現判定をリセット

 バスターの出現に関する処理が終了したので、バスターの出現判定をリセットする

ASのファイル:zero_buster.txt
 
	zero_buster_appearance="none"	//バスターの出現判定をリセット
 

・バスターモーションの時間

・・バスターモーションの時間のカウント

 「・バスター発射の条件」において、「_root.zero_buster="shot"」「_root.count_zero_buster_time=0」となることで、バスターモーションが開始される。
 処理の順序は、「カウントを増加させる」→「カウントが最大値以上の場合、バスターモーションの判定・カウントをリセット」、となる。

ASのファイル:zero_buster.txt
 
if(_root.zero_buster=="shot"){	//バスターモーションの判定がある場合
	_root.count_zero_buster_time++	//バスターモーションの時間のカウントを増加させるif(_root.count_zero_buster_time>=_root.count_zero_buster_time_max){_root.zero_buster="none";_root.count_zero_buster_time=0}	//カウントが最大値以上の場合,バスターモーションの判定・カウントをリセット
}
 

・・各種の値・判定のリセット

 この記述は、不要である可能性が高いが、念の為に記述している。

ASのファイル:zero_buster.txt
 
if(_root.zero_buster=="none"){	//バスターモーションの判定がない場合,各種の値・判定をリセット
	_root.count_zero_buster_time=0
	_root.zero_element_attachment_buster="none"
}
 

・バスターのチャージ判定

 チャージ判定を参照。

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