・概要

 このゲームでは、_rootの各フレームに、ステージのボードを配置している。つまり、_rootのフレームを移動させることで、ステージの移動を行っている
 そして、このゲームでは、「フレーム移動用の地形」(以下、「フレーム移動」)を用意し、ゼロと「フレーム移動」との接触判定があり、特定の条件が満たされた場合に、フレーム移動を行うように設定している

↓フレーム移動(ステージセレクト→テスト部屋、テスト部屋→ステージセレクト)。

・フレーム移動のMC

 フレーム移動のMCに、「移動先のフレーム名」の記述をしておく
 また、移動先の位置を指定する場合は、「移動先の位置に関する情報」の記述もしておく

↓フレーム移動のMCの例(ステージセレクト)(縦長の水色の矩形)。

ASのファイル:なし
 
onClipEvent(load){
	name_frame_movement="stage_test"	//移動先のフレーム名
}
 

↓フレーム移動のMCの例(テスト部屋)(縦長の水色の矩形)。

 以下は、右のフレーム移動のMCへの記述となる。

ASのファイル:なし
 
onClipEvent(load){
	name_frame_movement="stage_select"	//移動先のフレーム名
	position_frame_movement="stage_select_1"	//移動先の位置に関する情報
}
 

・フレーム移動との接触判定

 ゼロとフレーム移動との接触判定を取得する。また、同時に、「移動先のフレーム名」「移動先の位置に関する情報」に関する情報を取得する

ASのファイル:zero_hit_landform_enemy.txt
 
_root.zero_hit_frame_movement=0	//判定をリセットしておく
for(i=1;i<=_root.i_frame_movement;i++){
	landform=_root.board["frame_movement_"+i]	//参照先を変数に保存
	if(this.hitTest(landform)){
		_root.zero_hit_frame_movement=i	//接触判定
		name_frame_movement=landform.name_frame_movement	//移動先のフレーム名を取得
		position_frame_movement=landform.position_frame_movement	//移動先の位置に関する情報を取得break	//ループを離脱
	}
}
 

・フレーム移動(1)

・・概要

 ゼロに関する処理を解説する。

 フレーム移動の前提となる条件は、以下の通りとなる。
・通常状態(セイバーモーション中は不可能)。
・上キーの入力がある。
・リトライポイントではない。リトライポイントに関しては「・リトライポイント」を参照。

ASのファイル:zero_effect_landform_enemy_1.txt
 
if(_root.zero_hit_frame_movement!=0 and _root.zero_action=="normal" and _root.zero_saber=="none" and keydown_new_up==1 and name_frame_movement!="retry_point"){	//通常状態(セイバーモーション中は不可能)の場合・上キーの入力がある場合(リトライポイントの場合は不可能)}
 

・・ホワイトアウト・ホワイトインのMCの出現

 「移動先のフレーム名」「移動先の位置に関する情報」を変更し、ホワイトアウト・ホワイトインのMCを出現させる。

ASのファイル:zero_effect_landform_enemy_1.txt
 
	_root.name_frame_movement=name_frame_movement	//移動先のフレーム名を変更する
	_root.position_frame_movement=position_frame_movement	//移動先の位置に関する情報を変更する
	_root.attachMovie("whiteout_whitein","whiteout_whitein",_root.depth_whiteout_whitein)	//ホワイトアウト・ホワイトインのMCを出現させる
 

・フレーム移動(2)

・・概要

 ホワイトアウト・ホワイトインに関して解説する。ホワイトアウト・ホワイトインに関する参考サイト(https://ae-style.net/tutorials/t13.html)。

・・loadの処理

・・・フレーム移動判定

 「・・フレーム移動前」「・・フレーム移動後」を参照。

ASのファイル:whiteout_whitein.txt
 
	frame_movement=0	//フレーム移動判定(0:移動前,1:移動後)
 

・・・その他

 位置調整・透明度の変化の処理を行う。また、一時停止判定を付加する。

ASのファイル:whiteout_whitein.txt
 
	_parent._x=0;_parent._y=0	//位置調整
	_parent._alpha=0	//透明度の変化_root.start_pause=1	//一時停止判定
 

・・フレーム移動前

 フレーム移動前は、徐々にホワイトアウトさせる
 ホワイトアウトした場合は、フレーム移動判定を付加し、フレーム移動を行う。該当するフレームに移動する前に、「none」(MCを何も配置していないフレーム)のフレームに移動させている。これは、「現在と同一のフレーム」に移動する場合(「mission_failed」の場合など)に、その前に別のフレームに移動させておかないと、loadの処理などが再び行われずに、現在のフレームを継続してしまうことが理由となる。

↓「none」のフレーム。

↓「none」のフレームに移動しない場合。loadの処理などが再び行われず、ゼロのMCが出現しない。

ASのファイル:whiteout_whitein.txt
 
	if(frame_movement==0){	//フレーム移動前
		if(_parent._alpha<100){_parent._alpha+=_root.add_whiteout_whitein_alpha}	//徐々にホワイトアウト
		else{	//ホワイトアウトした場合
			frame_movement=1	//フレーム移動判定
			_root.gotoAndStop("none");_root.gotoAndStop(_root.name_frame_movement)	//フレーム移動
		}
	}
 

・・フレーム移動後

 フレーム移動後は、徐々にホワイトインさせる
 ホワイトインした場合は、一時停止判定をリセットし、MCを削除する

ASのファイル:whiteout_whitein.txt
 
	else{	//フレーム移動後
		if(_parent._alpha>0){_parent._alpha-=_root.add_whiteout_whitein_alpha}	//徐々にホワイトイン
		else{_root.start_pause=0;_parent.removeMovieClip()}	//ホワイトインした場合,一時停止判定をリセット,MCを削除
	}
 

・ゼロのMCの出現

 ゼロのMCは、ボードに配置している「zero_appearance」(または、「zero_appearance_+数字」)というインスタンス名のMCの位置に出現させるようにしている。
 出現の処理は、ボードにおいて記述している。

↓「board_stage_test」における「zero_appearance」(灰色の矩形)。この位置にゼロのMCを出現させる。

 ゼロのMCの出現に関する記述の例は、以下の通りとなる。

ASのファイル:board_stage_test.txt
 
	this.attachMovie("zero","zero",_root.depth_zero);this.zero._x=this.zero_appearance._x;this.zero._y=this.zero_appearance._y;_root.zero_direction=1
 

↓「board_stage_select」における「zero_appearance_2」(右の灰色の矩形)。「_root.position_frame_movement」が「stage_select_1」の場合、この位置にゼロのMCを出現させる。

 ゼロのMCの出現に関する記述の例は、以下の通りとなる。

ASのファイル:board_stage_select.txt
 
	if(_root.position_frame_movement=="stage_select_1"){	//stage_select_1の位置へ移動する場合
		this.attachMovie("zero","zero",_root.depth_zero);this.zero._x=this.zero_appearance_2._x;this.zero._y=this.zero_appearance_2._y;_root.zero_direction=-1
	}
 

・リトライポイント

・・概要

 フレーム移動用の地形に関しては、リトライポイントにも応用している。勿論、専用の地形のMCを用意してもいい。

↓リトライポイントと接触した場合、「フレーム移動の際の、ゼロが出現する位置」が変更される。なお、中央には、「即死(地形)との接触判定が付加される床」を配置している。

・・リトライポイント

 リトライポイントに関しては、「移動先のフレーム名」を「"retry_point"」にしておく。また、移動先の位置に関する情報を記述しておく

↓リトライポイント(右側の縦長の水色の矩形)。

ASのファイル:なし
 
onClipEvent(load){
	name_frame_movement="retry_point"	//移動先のフレーム名(リトライポイント)
	position_frame_movement="stage_select_2"	//移動先の位置に関する情報
}
 

・・フレーム移動との接触判定

 フレーム移動との接触判定がある場合、「移動先のフレーム名」が「"retry_point"」の場合は、移動先の位置に関する情報を変更する
 「・フレーム移動との接触判定」も参照。

ASのファイル:zero_hit_landform_enemy.txt
 
		if(name_frame_movement=="retry_point"){_root.position_frame_movement=position_frame_movement}	//リトライポイントの場合,移動先の位置に関する情報を変更する
 

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