・概要

 風・コンベアとの接触判定がある場合は、位置を移動させる処理を行う
 また、風の場合は、一部のアクションが制限される

・地形のカウント用の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