・概要

 ゼロ(本体、セイバー、バスター)・敵・地形などの接触判定(=当たり判定)は、「グラフィック(AA)の接触」ではなく、「それぞれのMCに配置された、hitrectの接触」によって判定を取得する。

 ゼロ(本体、セイバーバスター)や敵のhitrectを表示した場合、ゲーム画面は以下のようになる。


 ビッタアクアは、鎖の部分にhitrectがないため、ゼロのhitrectが接触してもダメージを受けない。また、ビッタアクアは、耳の部分にもhitrectがないため、バスターのhitrectが接触してもダメージを与えられない。
 一方で、ゼロのhitrectと、ビッタアクアのhitrectが接触した場合、ゼロはダメージを受ける。また、バスターセイバーのhitrectと、ビッタアクアのhitrectが接触した場合、ビッタアクアにダメージを与えられる。

・hitrectの統合体

 ゼロのセイバーや敵などには、「複数のhitrect」により構成されているものがある。
 ここにおいては、「複数のhitrectを統合したMC」を「hitrectの統合体(hitrect_synthesis)」と定義している。

 hitrectの構造(インスタンス名基準)は、以下の通りとなる。

xxx_hitrect(ここにASを記述する)
┣xxx_hitrect_synthesis
┃┗xxx_hitrect_1、xxx_hitrect_2、…、xxx_hitrect_x

┗xxx_hitrect_synthesis
  ┗xxx_hitrect_1、xxx_hitrect_2、…、xxx_hitrect_x

↓ビッタアクアの例。

・①(水色の線で囲まれた箇所):「enemy_hitrect_synthesis」。hitrectの統合体。
・②:「enemy_hitrect_1」。hitrectの統合体を構成しているhitrectのうちの一つ(以降も同様)。
・③:「enemy_hitrect_2」。
・④:「enemy_hitrect_3」。

・hitrectの端の位置・幅・高さ

・・概要

 ゼロや一部の敵は、毎フレーム、hitrectの端の位置・幅・高さに関する値を取得している
 これらの値は、主に、地形との接触判定に用いられる。

・・端の位置

 「端の位置」に関する記述は、以下の通りとなる。

ASのファイル:MC_width_height.txt
 
MC_xmin=this.getBounds(_root.board).xMin;MC_xmax=this.getBounds(_root.board).xMax	//左,右
MC_ymin=this.getBounds(_root.board).yMin;MC_ymax=this.getBounds(_root.board).yMax	//上,下
 

↓ゼロのhitrect(ダッシュエアダッシュの場合)の例。

・①:「MC_xmin」。ゼロのhitrectの左端の位置。
・②:「MC_xmax」。ゼロのhitrectの右端の位置。
・③:「MC_ymin」。ゼロのhitrectの上端の位置。
・④:「MC_ymax」。ゼロのhitrectの下端の位置。

・・幅・高さ

 「幅・高さ」に関する記述は、以下の通りとなる。

ASのファイル:MC_width_height.txt
 
MC_width_left=_parent._x-MC_xmin;MC_width_right=MC_xmax-_parent._x	//幅(左,右)
MC_height_up=_parent._y-MC_ymin;MC_height_down=MC_ymax-_parent._y	//高さ(上,下)
 

↓ゼロのhitrect(ダッシュエアダッシュの場合)の例。

・①:「MC_width_left」。ゼロのhitrectの幅(左)。
・②:「MC_width_right」。ゼロのhitrectの幅(右)。
・③:「MC_height_up」。ゼロのhitrectの高さ(上)。
・④:「MC_height_down」。ゼロのhitrectの高さ(下)。

 例えば、「MC_width_right」に関しては、以下のように算出する。

↓「MC_width_right」の算出。

・①:「MC_xmax」。
・②:「_parent._x」。ゼロのx方向の位置。
・③:「MC_width_right」。①-②。

 他の値に関しても、同様に算出する。

 敵の中には、「複数のhitrectにより構成されている敵」もいるが、記述はゼロと同様である。

最終更新:2020年12月19日 11:18