・概要
ここでは、主に、ゼロに関して解説する。
処理の基礎に関しては、
地形との接触判定を参照。
なお、壁を厚くしているのは、ゼロが壁に近接した状態において、バスターを貫通させないためである。
↓壁を薄くした場合。
バスターが貫通する。
・壁(右)との接触判定
・壁(左)との接触判定
・・概要
壁(右)とほぼ同様の処理を行っている。
・・地形めり込み量の最大値(初期値)
壁(右)とほぼ同様であるが、移動量に「-1」を掛けている点が異なる。
ASのファイル:initial_hit_max.txt
initial_hit_x_max_left=-MC_dx+1 //左
・・接触判定
壁(右)とほぼ同様の処理を行っている。
↓地形めり込み量。
・①:「this.getBounds(_root.board).xMin」。ゼロのhitrectの左端の位置。
・②:「landform_xmax」。
・③:「hit_x_wall_left」。②-①。
・④:「hit_x_max_left」。③<=④の条件が満たされるため、接触判定が付加される。
ASのファイル:zero_hit_wall_left.txt
hit_x_wall_left=landform_xmax-this.getBounds(_root.board).xMin //地形めり込み量
if(hit_x_wall_left<=hit_x_max_left){ //地形めり込み量が最大値以下の場合
hit_wall_left=i //接触判定
︙
}
・・位置調整
壁(右)とほぼ同様の処理を行っている。
ASのファイル:zero_hit_wall_left.txt
_parent._x+=hit_x_wall_left //位置調整
・地形に挟まれることによる即死判定(壁(右、左))
・・概要
地形による位置調整の後で、「地形に挟まれることによる即死判定(壁(右、左))」を取得する。
各種地形・敵の影響の「・
各種地形・敵の影響(2)」の「・・地形に挟まれることによる即死」も参照。
・・判定の付加
”単純”な接触判定(hitTest)がある場合は、「地形に挟まれることによる即死判定(壁(右、左))」を付加する。
ここでは、「右」を例にするが、「左」も同様の処理をしている。
ASのファイル:zero_hit_landform_enemy.txt
for(i=1;i<=_root.i_wall_right;i++){
if(this.hitTest(_root.board["wall_right_"+i])){caught_wall_right=i}
}
・・地形による位置調整の前に、判定を取得する場合
地形による位置調整の前に、判定を取得する場合は、以下のような不具合が生じる。
↓地形による位置調整の前に、判定を取得する場合。天井があるにも関わらず、壁(左)と接触し、「地形に挟まれることによる即死判定(壁(左))」が付加される。
↓地形による位置調整の前に、判定を取得する場合。
↓地形による位置調整の後に、判定を取得する場合。天井による位置調整により、壁(左)と接触せず、「地形に挟まれることによる即死判定(壁(左))」が付加されない。
・壁蹴りを可能にする判定
・・概要
ジャンプ中に、「ゼロのhitrect(前方)」と壁との接触判定がある場合は、「壁蹴りを可能にする判定」を付加する。
壁蹴りへの移行に関しては、
ジャンプの「・他のアクションへの移行」の「・・
壁蹴りへの移行」も参照。
前提となる条件は、以下の通りとなる。
ASのファイル:zero_hit_landform_enemy.txt
if(_root.zero_action=="jump"){ //ジャンプの場合
︙
}
・・判定の付加
ここでは、ゼロが右向きの場合を解説する。ゼロが左向きの場合も、同様の処理をしている。
ASのファイル:zero_hit_landform_enemy.txt
if(_root.zero_direction==1){
for(i=1;i<=_root.i_wall_right;i++){
landform=_root.board["wall_right_"+i] //参照先を変数に保存
if(_parent.zero_front_hitrect.hitTest(landform)){
zero_wall_kick_enable=1 //壁蹴りを可能にする判定
if(landform.ice_wall==1){zero_wall_kick_enable=0;break} //氷の壁との接触判定がある場合,壁蹴りを可能にする判定をリセット,ループを離脱
}
}
}
・「if(_root.zero_direction==1)」:ゼロが右向きの場合。
・「if(_parent.zero_front_hitrect.hitTest(landform))」:「ゼロのhitrect(前方)」と壁(右)との接触判定がある場合。
・「zero_wall_kick_enable=1」:
「壁蹴りを可能にする判定」を付加する。ゼロが左向きの場合は、「-1」となる。
・「if(landform.ice_wall==1){zero_wall_kick_enable=0;break}」:氷の壁との接触判定がある場合は、「壁蹴りを可能にする判定」をリセットし、ループを離脱する。氷の壁に関しては、
氷の壁を参照。
最終更新:2020年12月19日 09:22