・概要
「梯子昇降」とは、梯子を昇り降りするアクション を指す。
↓梯子昇降。
・loadの処理
・・速度
「・方向、速度」の「・・速度」を参照。
このゲームにおいては、速度は1種類のみだが、複数用意して、チップ(パーツ)等により変化させても良いかもしれない。
ASのファイル:zero_load.txt
velocity_zero_ladder=2 //梯子昇降の速度
・モーション
ASのファイル:zero_action_ladder.txt
if ( _root .zero_buster =="none" and _root .zero_saber =="none" ) { _parent .zero_AA .gotoAndStop ( "zero_AA_ladder" ) } //攻撃中ではない場合
・位置調整
梯子昇降中は、常に「梯子のx方向の位置」に位置調整する。
ASのファイル:zero_action_ladder.txt
_parent ._x =ladder_x //位置調整
・「ladder_x」:梯子のx方向の位置。
梯子 の「・梯子との接触判定」を参照。
・方向、速度
・・概要
「方向の変更」や「速度の付加」は、攻撃中ではない場合のみ行える 。
ASのファイル:zero_action_ladder.txt
if ( _root .zero_buster =="none" and _root .zero_saber =="none" ) { //攻撃中ではない場合
︙
}
・・方向
左右キーの入力がある場合、方向を変更する 。
↓方向の変更。分かりやすくするため、バスターを発射している。
ASのファイル:zero_action_ladder.txt
if ( keydown_right==1 ) { _root .zero_direction =1 } //右キーの入力がある場合,右向きに変更
else if ( keydown_left==1 ) { _root .zero_direction =-1 } //左キーの入力がある場合,左向きに変更
なお、原作においては、「左右キーの入力をしつつ攻撃した場合」にのみ、方向が変更される。
・・速度
・・・概要
y方向の速度を0にしておき、上下キーの入力がある場合に、速度を付加させている。
ASのファイル:zero_action_ladder.txt
_root .velocity_zero_y =0 //y方向の速度を0にする
・・・梯子を昇る
上キーの入力がある場合は、梯子を昇る 。ただし、天井・傾斜天井との接触判定がない場合に限定される。
ASのファイル:zero_action_ladder.txt
if ( keydown_up==1 and _root .zero_hit_ceiling ==0 and _root .zero_hit_sloped_ceiling ==0 ) { _root .velocity_zero_y =-velocity_zero_ladder} //上キーの入力がある場合,梯子を昇る(天井・傾斜天井との接触判定がない場合)
・「keydown_up==1」:上キーの入力がある。
・「_root.zero_hit_ceiling==0 and _root.zero_hit_sloped_ceiling==0」:天井・傾斜天井との接触判定がない。
・「_root.velocity_zero_y=-velocity_zero_ladder」:ゼロのy方向の速度に、梯子昇降の速度を代入する。上方向なので、「-」の符号を付けている。
・・・梯子を降りる
下キーの入力がある場合は、梯子を降りる 。
ASのファイル:zero_action_ladder.txt
else if ( keydown_down==1 ) { _root .velocity_zero_y =velocity_zero_ladder} //下キーの入力がある場合,梯子を降りる
・「keydown_down==1」:下キーの入力がある。
・「_root.velocity_zero_y=velocity_zero_ladder」:ゼロのy方向の速度に、梯子昇降の速度を代入する。
・他のアクションへの移行
・・概要
梯子昇降からは、ジャンプや通常状態に移行する。いずれの場合も、ゼロのy方向の速度を0にしている。
・・ジャンプへの移行
梯子との接触判定がない場合、または、ジャンプキーの入力がある場合に、ジャンプに移行する。
↓ジャンプへの移行(梯子との接触判定がない場合)。
↓ジャンプへの移行(ジャンプキーの入力がある場合)。
ASのファイル:zero_action_ladder.txt
if ( _root .zero_hit_ladder ==0 or keydown_new_jump==1 ) { _root .velocity_zero_y =0 ;_root .zero_action ="jump" } //梯子との接触判定がない場合,ジャンプキーの入力がある場合,ジャンプに移行
・・通常状態への移行(1)
「ゼロの脚付近の位置」が梯子の上端の位置より上にある場合、位置調整を行い、通常状態に移行する。梯子の上端の位置の取得に関しては、
梯子 の「・梯子との接触判定」を参照。
これは、「
梯子を昇りきった状態 」である。
↓通常状態への移行(1)。
↓通常状態への移行(1)の条件。
・①:「_parent._y」。ゼロのy方向の位置。
・②:「MC_height_down」。ゼロのhitrectの高さ(下)。
hitrect の「・hitrectの端の位置・幅・高さ」を参照。
・③:「ゼロの脚付近の位置」。①+②/2。
・④:「ladder_ymin」。梯子の上端の位置。③<④の条件が満たされるため、通常状態に移行することになる。
ASのファイル:zero_action_ladder.txt
else if ( _parent ._y +MC_height_down/ 2 < ladder_ymin) { //ゼロの脚付近の位置が梯子の上端の位置より上にある場合
_root .velocity_zero_y =0
hit_y_ladder=this .getBounds ( _root .board ) .yMax -ladder_ymin //地形めり込み量
_parent ._y-=hit_y_ladder //位置調整
_root .zero_action ="normal" //通常状態に移行
}
・「_parent._y-=hit_y_ladder」:床などと同様の位置調整を行う。
床 を参照。
原作においては、専用のモーションがあるが、このゲームにおいては、(作るのが面倒臭すぎるので) 専用のモーションはない。
・・通常状態への移行(2)
床・傾斜床・沈む地形との接触判定がある場合は、通常状態に移行する。
↓通常状態への移行(2)。
ASのファイル:zero_action_ladder.txt
else if ( _root .zero_hit_floor ! =0 or _root .zero_hit_sloped_floor ! =0 or _root .zero_hit_sink ! =0 ) { _root .velocity_zero_y =0 ;_root .zero_action ="normal" } //床・傾斜床・沈む地形との接触判定がある場合,通常状態に移行
最終更新:2020年12月12日 11:01