・概要
風・コンベアとの接触判定がある場合は、位置を移動させる処理を行う。
また、風の場合は、一部のアクションが制限される。
・地形のカウント用のMC
「地形のカウント用のMC」において「風・コンベアの速度」を管理している。
ボードの「・ステージの
ボードのAS」の「・・loadの処理」の「・・・地形のカウント用のMC」を参照。
「風・コンベアの速度」の設定の例は、以下の通りとなる。この例の場合は、「風・コンベア」の番号は「1」となる。
ASのファイル:landform_count_stage_select.txt
count_wind_conveyor[1-1]++
if(count_wind_conveyor[1-1]<=30){_root.velocity_wind_conveyor_x[1-1]=2}
else if(count_wind_conveyor[1-1]<=60){_root.velocity_wind_conveyor_x[1-1]=-2}
if(count_wind_conveyor[1-1]==60){count_wind_conveyor[1-1]=0}
・「count_wind_conveyor[1-1]」:風・コンベアに関するカウント。
・「_root.velocity_wind_conveyor_x[1-1]」:風・コンベアの速度。カウントの値に応じて変化する。
・「if(count_wind_conveyor[1-1]==60){count_wind_conveyor[1-1]=0}」:カウントが一定の値となった場合、リセットする。
一応、y方向に関しても設定できるようにしているが、実際は使用していない。
・風との接触判定
ゼロと風との
接触判定を取得する。前提となる条件は、以下の通りとなる。
・
梯子昇降・拘束状態ではない。
・
スパイク・ウィンド装着中ではない。または、
スパイク・ウィンド装着中に、床・傾斜床・沈む地形との接触判定がない。「スパイク・ウィンド」に関しては、
フットチップの「・スパイク・ウィンド」の動画を参照。
ASのファイル:zero_hit_landform_enemy.txt
_root.zero_hit_wind=0 //判定をリセットしておく
if(_root.zero_action!="ladder" and _root.zero_action!="bind"){ //梯子昇降・拘束状態ではない場合
if(_root.zero_tip_foot_spike_wind==-1 or (_root.zero_tip_foot_spike_wind==1 and _root.zero_hit_floor==0 and _root.zero_hit_sloped_floor==0 and _root.zero_hit_sink==0)){ //スパイク・ウィンド装着中ではない場合(スパイク・ウィンド装着中,床・傾斜床・沈む地形との接触判定がない場合)
for(i=1;i<=_root.i_wind;i++){
landform=_root.board["wind_"+i] //参照先を変数に保存
if(this.hitTest(landform)){
_root.zero_hit_wind=i //接触判定
if(landform.number_wind!=undefined){_root.zero_hit_wind=landform.number_wind} //接触判定(地形に風の番号が設定されている場合)
break //ループを離脱
}
}
}
}
・「if(landform.number_wind!=undefined){_root.zero_hit_wind=landform.number_wind}」:地形のMCにおいて記述した風の番号を取得することも可能にしている。この処理により、例えば「wind_2」において「number_wind=1」と記述していた場合、風の番号は「2」ではなく「1」となる。
・風との接触判定がある場合の処理
・・ゼロの位置の移動
ゼロの位置を移動させる。
↓ゼロの位置の移動。「・地形のカウント用のMC」における設定の例。
ASのファイル:zero_effect_landform_enemy_1.txt
if(_root.zero_hit_wind!=0){
_parent._x+=_root.velocity_wind_conveyor_x[_root.zero_hit_wind-1];_parent._y+=_root.velocity_wind_conveyor_y[_root.zero_hit_wind-1]
}
・・ジャンプ
追い風の場合のみ、ジャンプから壁ずり落ちに移行できる(原作準拠)。
ジャンプの「・他のアクションへの移行」の「・・
壁ずり落ちへの移行」も参照。
ASのファイル:zero_action_jump.txt
else{ //風との接触判定がある場合
if(_root.velocity_zero_y>=0 and ((_root.zero_hit_wall_right!=0 and keydown_right==1 and _root.velocity_wind_conveyor_x[_root.zero_hit_wind-1]>=0) or (_root.zero_hit_wall_left!=0 and keydown_left==1 and _root.velocity_wind_conveyor_x[_root.zero_hit_wind-1]<=0))){_root.zero_action="wall_slide"} //下降中,壁との接触判定があり,左右キーの入力がある場合,壁ずり落ちに移行(追い風の場合のみ)
}
壁(右)の場合は、以下の条件が追加される。
・「_root.velocity_wind_conveyor_x[_root.zero_hit_wind-1]>=0」:風の速度が0以上。
壁(左)の場合は、「>=」を「<=」に置き換える。
・コンベアとの接触判定
「コンベアとの
接触判定を付加させるための地形のMC」に、以下の記述をしておく。
地形の出現・消滅の「・地形の
MCの構造」も参照。下記の例の場合は、「コンベア」の番号は「1」となる。
ASのファイル:なし
onClipEvent(load){
conveyor=1 //コンベア
}
コンベアとの
接触判定を取得する前提となる条件は、以下の通りとなる。
・
ゼロの場合、梯子昇降・拘束状態ではない。
ASのファイル:landform_property.txt
if(landform.conveyor!=0 and (MC_hit_landform!="zero" or (MC_hit_landform=="zero" and _root.zero_action!="ladder" and _root.zero_action!="bind"))){hit_conveyor=landform.conveyor} //ゼロの場合・梯子昇降・拘束状態ではない場合
梯子昇降の条件は不要と思われるが、一応、条件を風と合わせている。
・コンベアとの接触判定がある場合の処理
・・ゼロの位置の移動
ゼロの位置を移動させる。
↓ゼロの位置の移動。「・地形のカウント用のMC」における設定の例。
ASのファイル:zero_effect_landform_enemy_1.txt
if(_root.zero_hit_conveyor!=0){
_parent._x+=_root.velocity_wind_conveyor_x[_root.zero_hit_conveyor-1]
}
最終更新:2020年12月19日 08:54