・概要
「ダッシュ」は、姿勢を低くしつつ、高速移動するアクションを指す。
↓ダッシュ。
「(アクションの状態としての)ダッシュ」と「ダッシュ属性」は異なる概念であることに注意。「・ダッシュ属性」を参照。
ここでは、「
氷の床との
接触判定がない場合」のみを解説する。「氷の床との接触判定がある場合」は
氷の床を参照。
・loadの処理
・・速度
「・速度」を参照。
ASのファイル:zero_load.txt
velocity_zero_dash=3.6 //ダッシュの速度
velocity_zero_dash_saber=2.7 //ダッシュセイバーの速度
︙
velocity_zero_ex_saber_dash_thrust=3.1 //EXダッシュ突きの速度
・・カウント
「・ダッシュのカウント」を参照。
ASのファイル:zero_load.txt
_root.count_zero_dash=0 //ダッシュのカウント
count_zero_dash_max=29 //ダッシュのカウントの最大値
・・ダッシュ属性
「・ダッシュ属性」を参照。
ASのファイル:zero_load.txt
_root.zero_dash=0 //ダッシュ属性
・・その他
ダッシュ残像関連の変数。アクションと直接的に関係がないので、解説は省略する。
ASのファイル:zero_load.txt
_root.zero_dash_afterimage=0 //ダッシュ残像の出現判定
number_zero_dash_afterimage_max=2 //ダッシュ残像の個数の最大値
・hitrect
ダッシュ(またはエアダッシュ)の場合は、hitrectが変化する。この処理により、敵の一部の攻撃を回避できる。
ASのファイル:zero.txt
if(_root.zero_action=="dash" or _root.zero_action=="air_dash"){this.gotoAndStop("zero_hitrect_dash")} //ダッシュ・エアダッシュの場合
else{this.gotoAndStop("zero_hitrect_normal")} //それ以外の場合
・「if(_root.zero_action=="dash" or _root.zero_action=="air_dash")」:ダッシュ・エアダッシュの場合。
・「this.gotoAndStop("zero_hitrect_dash")」:ダッシュ・エアダッシュのhitrectに変化させる。
・「else{this.gotoAndStop("zero_hitrect_normal")}」:それ以外の場合は、ダッシュ・エアダッシュ以外のhitrect。
・モーション
ASのファイル:zero_action_dash.txt
if(_root.zero_buster=="none" and _root.zero_saber=="none"){_parent.zero_AA.gotoAndStop("zero_AA_dash");_parent.zero_AA.zero_AA_dash.gotoAndStop(_root.count_zero_dash)} //攻撃中ではない場合
・「_parent.zero_AA.zero_AA_dash.gotoAndStop(_root.count_zero_dash)」:ダッシュの場合、常に一定のモーションであるわけではないため、該当するカウント(「_root.count_zero_dash」)を指定する必要がある。このような記述をしないと、例えば、ダッシュバスターのモーションを終了した後で、ダッシュの初期のモーションをすることになる。
・ダッシュのカウント
ダッシュ中は、ダッシュのカウントを増加させる。
↓「_root.count_zero_dash」(ダッシュのカウント)の増加。
ASのファイル:zero_action_dash.txt
_root.count_zero_dash++ //ダッシュのカウントを増加させる
・ダッシュ属性
「ダッシュ属性」は、「ダッシュ」「エアダッシュ」「ジャンプ」などに付加させることができる属性のことを指す。「ジャンプ」「壁蹴り」にダッシュ属性が付加している場合、それぞれ、「ダッシュジャンプ」「ダッシュ壁蹴り」となる。
ダッシュ属性が付加されている場合は、速度が高速化する。また、このゲームでは、ダッシュ属性が付加している場合、ダッシュ残像が表示されるようにしている(部分的に原作準拠)。
↓ダッシュ属性の付加。
ASのファイル:zero_action_dash.txt
_root.zero_dash=1 //ダッシュ属性
・速度
ダッシュの速度は、セイバーモーションの状態によって変化する(原作準拠)。
ASのファイル:zero_action_dash.txt
if(_root.zero_saber=="none"){_root.velocity_zero_x=velocity_zero_dash*_root.zero_direction} //セイバーモーション中ではない場合の速度
else if(_root.zero_saber=="dash"){_root.velocity_zero_x=velocity_zero_dash_saber*_root.zero_direction} //セイバーモーション中(ダッシュセイバー)の速度
︙
「セイバーモーション中ではない場合の速度」の場合は、以下の通りとなる。
・「if(_root.zero_saber=="none")」:セイバーモーション中ではない場合。
・「_root.velocity_zero_x=velocity_zero_dash*_root.zero_direction」:ゼロのx方向の速度に、「ダッシュの速度×ゼロの方向」を代入する。
・他のアクションへの移行
・・概要
他のアクションへの移行に関しては、「セイバーモーション中の場合」と「セイバーモーション中ではない場合」で場合分けする必要がある。
ASのファイル:zero_action_dash.txt
if(_root.zero_saber!="none"){ //セイバーモーション中の場合
︙
}
else{ //セイバーモーション中ではない場合
︙
}
・・セイバーモーション中の場合
・・・概要
セイバーモーション中の場合は、「ダッシュのカウント」の値に関係なく、セイバーモーションの時間のカウントの最大値以上となるまで(つまり、セイバーモーションが終了するまで)、ダッシュを継続させる(原作準拠)。
これにより、原作における「セイバーによるダッシュの時間の延長」を再現している。
ASのファイル:zero_action_dash.txt
if(_root.count_zero_saber_time>=_root.count_zero_saber_time_max){ //セイバーモーションの時間のカウントの最大値以上の場合
︙
}
↓通常状態や歩きへの移行(セイバーモーション終了後)。
・・・歩きへの移行
左右キーの入力がある場合は、歩きに移行する。
ASのファイル:zero_action_dash.txt
if(keydown_right==1 or keydown_left==1){_root.zero_action="walk"} //左右キーの入力がある場合,歩きに移行
・・・通常状態への移行
左右キーの入力がない場合は、通常状態に移行する。
ASのファイル:zero_action_dash.txt
else{_root.zero_action="normal"} //左右キーの入力がない場合,通常状態に移行
・・セイバーモーション中ではない場合
・・・ジャンプ開始への移行
↓ジャンプ開始への移行。
ASのファイル:zero_action_dash.txt
if(keydown_new_jump==1){_root.zero_action="jump_start"} //ジャンプキーの入力がある場合,ジャンプ開始に移行
・・・歩き・通常状態への移行
歩き・通常状態に移行する場合には、前提として、以下の2つの条件のいずれかが満たされる必要がある。
・ダッシュキーの入力がなくなる。
・ダッシュのカウントが最大値以上になる。
ASのファイル:zero_action_dash.txt
else if(keydown_dash==0 or _root.count_zero_dash>=count_zero_dash_max){ //ダッシュキーの入力がなくなった場合,カウントが最大値以上の場合
︙
}
他の条件に関しては、「・・セイバーモーション中の場合」と同様なので、詳細な解説は省略する。
ASのファイル:zero_action_dash.txt
if(keydown_right==1 or keydown_left==1){_root.zero_action="walk"} //左右キーの入力がある場合,歩きに移行
else{_root.zero_action="normal"} //左右キーの入力がない場合,通常状態に移行
・クイックターン
「クイックターン」は、ダッシュ中に方向転換することを指す。セイバーモーション中は実行できない。
↓クイックターン。
ASのファイル:zero_action_dash.txt
if(_root.zero_saber=="none"){ //セイバーモーション中ではない場合
if(keydown_right==1){_root.zero_direction=1} //クイックターン
else if(keydown_left==1){_root.zero_direction=-1}
}
・「if(keydown_right==1)」:右キーの入力がある場合。
・「_root.zero_direction=1」:ゼロの方向を右向きにする。
左キーの入力がある場合も同様の処理をしている。
・シャドウダッシュ
最終更新:2020年12月19日 08:55