・概要
このゲームでは、_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)
・・概要
・・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