・概要

 沈む地形との接触判定がある場合は、徐々に沈んでいく。また、速度が変化する。
 ライト装着中の場合に関しては、ボディチップの「・ライト」を参照。

 地味な地形だが、処理は結構面倒。

・loadの処理

・・速度

 「沈む地形における沈む速度の最大値」を設定する。

ASのファイル:zero_load.txt
 
velocity_zero_sink_max=0.12	//沈む地形における沈む速度の最大値
 

・・沈む地形から脱出した場合の判定

 「・沈む地形との接触判定がある場合の処理」を参照。

ASのファイル:zero_load.txt
 
zero_sink_jump=0	//沈む地形から脱出した場合の判定
 

・沈む地形との接触判定

 ゼロと沈む地形との接触判定を取得する。また、位置取得を行う。

ASのファイル:zero_hit_sink.txt
 
hit_sink=0	//判定をリセットしておく
for(i=1;i<=_root.i_sink;i++){
	landform=_root.board["sink_"+i]	//参照先を変数に保存
	if(this.hitTest(landform)){
		hit_sink=i	//接触判定
		sink_ymin=landform._y	//位置取得break	//ループを離脱
	}
}
 

・沈む地形との接触判定がある場合の処理

・・速度

 沈む地形との接触判定がある場合は、以下の処理を行う。
「沈む地形から脱出した場合の判定」を付加する
ジャンプの初速度の値よりも沈んでいる場合は、y方向の速度を半減させるジャンプの初速度の値よりも沈んでいない場合は、y方向の速度が半減せずに、脱出可能になる
x方向の速度を半減させる
y方向の速度を制限する。この処理により、ゼロが徐々に沈むことになる

↓沈む地形との接触判定がある場合。

ジャンプの初速度の値よりも沈んでいる場合。

・①:「this.getBounds(_root.board).yMax」。ゼロのhitrectの下端の位置。
・②:「sink_ymin」。沈む地形の上端の位置。
・③:「_root.velocity_zero_jump」。ジャンプの初速度の値。

ASのファイル:zero_effect_landform_enemy_1.txt
 
if(_root.zero_hit_sink!=0){
	if(this.getBounds(_root.board).yMax>sink_ymin+_root.velocity_zero_jump){_root.velocity_zero_y/=2}	//ジャンプの初速度の値よりも沈んでいる場合,y方向の速度を半減させる
	if(_root.zero_tip_body_light==-1){	//ライト装着中ではない場合
		zero_sink_jump=1	//沈む地形から脱出した場合の判定
		_root.velocity_zero_x/=2	//x方向の速度を半減させる
		if(_root.velocity_zero_y>velocity_zero_sink_max){_root.velocity_zero_y=velocity_zero_sink_max}	//y方向の速度の制限
	}}
 

・・ジャンプ、エアダッシュ

 「沈む地形から脱出した場合の判定」がある場合、ジャンプ・エアダッシュは、x方向の速度を半減させる

↓沈む地形から脱出した場合のジャンプ・エアダッシュ

ASのファイル:zero_action_jump.txt、zero_action_air_dash.txt
 
if(_root.zero_hit_sink==0 and zero_sink_jump==1){_root.velocity_zero_x/=2}	//沈む地形から脱出した場合,x方向の速度を半減させる
 

・・「沈む地形から脱出した場合の判定」のリセット

 各種の値のリセットの「・ジャンプ開始・ジャンプ関連」の「・・ダブルジャンプのカウント、エアダッシュのカウントなど」を参照。

最終更新:2020年12月19日 10:29