・概要
ゼロ(本体、セイバー、バスター)・敵・地形などの接触判定(=当たり判定)は、「グラフィック(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