・概要

 ここでは、「梯子との接触判定」と、「梯子との接触判定がある場合の処理」に関して解説する。
 梯子昇降も参照。

・梯子との接触判定

 梯子との接触判定を取得する。また、位置取得を行う。

↓梯子のMC。

・①:「ladder_x」。梯子のx方向の位置。
・②:「ladder_ymin」。梯子の上端の位置。

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

・梯子との接触判定がある場合の処理(梯子昇降への移行)

・・概要

 梯子昇降への移行に関して、前提となる条件は、以下の通りとなる。
・梯子との接触判定がある。
・通常状態・ジャンプ。

ASのファイル:zero_effect_landform_enemy_1.txt
 
if(_root.zero_hit_ladder!=0 and (_root.zero_action=="normal" or _root.zero_action=="jump")){	//通常状態・ジャンプの場合}
 

・・梯子昇降への移行(1)

 上キーの入力がある場合の梯子昇降への移行の条件は、以下の通りとなる。
ゼロのy方向の位置が梯子の上端の位置より下にある

 同時に、位置調整を行い、速度を0にする。

梯子昇降への移行(1)。

梯子昇降への移行(1)。

・①:「_parent._y」。ゼロのy方向の位置。
・②:「ladder_ymin」。梯子の上端の位置。①>②が満たされているため、梯子昇降に移行できる。

ASのファイル:zero_effect_landform_enemy_1.txt
 
	if(keydown_up==1){	//上キーの入力がある場合
		if(_parent._y>ladder_ymin){	//ゼロのy方向の位置が梯子の上端の位置より下にある場合
			_parent._x=ladder_x;_parent._y-=velocity_zero_ladder	//位置調整
			_root.velocity_zero_x=0;_root.velocity_zero_y=0	//速度を0にする
			_root.zero_action="ladder"	//梯子昇降に移行
		}
	}
 

・・梯子昇降への移行(2)

 下キーの入力がある場合の梯子昇降への移行の条件は、以下の通りとなる。
ゼロのy方向の位置が梯子の上端の位置より上にある
・床との接触判定がある。
・攻撃中ではない。

 同時に、位置調整を行い、速度を0にする。
 また、床貫通判定を付加する。床貫通判定に関しては、貫通可能な床を参照。

梯子昇降への移行(2)。

梯子昇降への移行(2)。

・①:「_parent._y」。ゼロのy方向の位置。
・②:「ladder_ymin」。梯子の上端の位置。①<②が満たされているため、梯子昇降に移行できる。

ASのファイル:zero_effect_landform_enemy_1.txt
 
	else if(keydown_down==1){	//下キーの入力がある場合
		if(_parent._y<ladder_ymin and _root.zero_hit_floor!=0 and _root.zero_buster=="none" and _root.zero_saber=="none"){	//ゼロのy方向の位置が梯子の上端の位置より上にある場合・床との接触判定がある場合・攻撃中ではない場合
			_parent._x=ladder_x;_parent._y+=MC_height_down/2	//位置調整
			_root.velocity_zero_x=0;_root.velocity_zero_y=0	//速度を0にする
			zero_through_floor=1	//床貫通判定
			_root.zero_action="ladder"	//梯子昇降に移行
		}
	}
 

最終更新:2020年12月19日 09:31