・概要

 操作キャラクター(以下、「ゼロ」)に関して解説する。
 「アクションの状態」や、「各種地形との接触判定」などの処理は、敵やボスにも応用している

・ゼロのMCの構造

 ゼロのMCの構造は、以下の通りとなる。ゼロのhitrectは2種類ある。

zero(ゼロのMC)
┣zero_AA(ゼロのAA)
┃┣zero_AA_normal(「通常状態」のAA)
┃┣zero_AA_dying(「通常状態(瀕死)」のAA)
︙︙(アクションの状態関連のAA)
┃┣zero_AA_buster_normal(「通常状態、バスター」のAA)
︙︙(バスター関連のAA)
┃┣zero_AA_saber_normal_1(「通常状態、セイバー1段目」のAA)
︙︙(セイバー関連のAA)
┃┣zero_AA_charge_saber_normal(「通常状態、チャージセイバー」のAA)
︙︙(チャージセイバー関連のAA)
┃┣zero_AA_ex_saber_rising_slash(「EX上昇斬り」のAA)
︙︙(EXセイバー関連のAA)
┃┣zero_AA_damage_front(「被ダメージ状態(前方)」のAA)
┃┗zero_AA_damage_back(「被ダメージ状態(後方)」のAA)
┣zero_hitrect(ゼロのhitrect(本体))(ここにASを記述する)
┃┣zero_hitrect_normal(「ダッシュ・エアダッシュ以外」のhitrect)
┃┗zero_hitrect_dash(「ダッシュ・エアダッシュ」のhitrect)
┗zero_front_hitrect(ゼロのhitrect(前方))

↓ゼロのAA(それぞれにモーションを設定している)。

↓ゼロのAAのモーションの例(zero_AA_charge_saber_normal)。

↓ゼロのhitrect(本体のみ表示)。「ダッシュ・エアダッシュ以外」(縦長の長方形)と「ダッシュ・エアダッシュ」(正方形)で、hitrectの形状が異なる。

・ゼロのhitrect

 ゼロのhitrectは2種類ある。

↓「zero_hitrect」。「ゼロのhitrect(本体)」。大半の地形・敵・アイテムなどとの接触判定を取得するためのhitrect。「・ゼロのMCの構造」の動画で示した通り、2種類ある。

↓「zero_front_hitrect」。「ゼロのhitrect(前方)」。(壁蹴り関連で)壁との接触判定を取得するためのhitrect。詳細はの「・壁蹴りを可能にする判定」を参照。

・ゼロのMCの出現

 フレーム移動の「・ゼロのMCの出現」を参照。

・ゼロのASの構成

 ゼロのASの構成の概要は、下記の通りとなる(エフェクト関連は省略)。操作キャラクターということもあり、全ASの中でも最も長く複雑な構成となっている。
 また、「#include」を多用している。

ゼロのAS
┣loadの処理
┗enterFrameの処理
  ┣一時停止判定がある場合(処理を行わない)
  ┣イベント停止判定がある場合の処理
  ┗一時停止判定がない場合の処理
    ┣各キーの入力に関する判定(1)
    ┣重力加速度の付加、速度の制限
    ┣hitrectの変化の処理
    ┣各種「アクションの状態」関連の処理、その他のアクションの移行
    ┣各種の値のリセット
    ┣イベント停止判定がある場合の処理
    ┣バスター発射、セイバー発動
    ┣各種地形・敵関連の処理、方向の反転・移動
    ┣無敵時間のカウント
    ┣一時停止判定を付加するための処理、ポーズメニューの出現
    ┣簡易属性変更
    ┗各キーの入力に関する判定(2)

・loadの処理

・・キー入力

 キー入力を参照。

・・hitrectを非表示にするための処理

 hitrectを非表示にするための処理。敵やアイテムなどのMCにおいても同様の処理をしている。

ASのファイル:zero_load.txt
 
this._visible=false	//hitrect(本体)を非表示にする
_parent.zero_front_hitrect._visible=false	//hitrect(前方)を非表示にする
 

・・位置

 「_root.zero_x」「_root.zero_y」は、ゼロの位置(x・y方向)を保存するための変数である。
 この変数は、様々なMCから参照される

・・速度

 「_root.velocity_zero_x」「_root.velocity_zero_y」は、ゼロの速度(x・y方向)であり、この値に基づいて位置の移動を行う。参考サイト(https://hakuhin.jp/as/move.html)。
 この変数には、様々な値が代入されることになる

 なお、「loadの処理」において設定されている各種アクションなどの「速度」の値は、方向が「右」の場合を基準としている。

・・加速度・減速度

 加速度・減速度は、ゼロの速度の変化率(x・y方向)である。参考サイト(https://hakuhin.jp/as/move.html)。

 最も代表的なものとして「重力加速度」が挙げられる。ジャンプ開始ジャンプを参照。
 他には、「氷の床における加速度」「氷の床における減速度」などが挙げられる。氷の床を参照。

・・方向

 「_root.zero_direction」はゼロの方向である。

ASのファイル:zero_load.txt
 
if(_root.zero_direction!=-1){_root.zero_direction=1}	//ゼロの方向(1:右,-1:左)(出現元のMCが指定していない場合は1)
 

 上記のように、「右方向」を「1」、「左方向」を「-1」と定義すると記述を簡略化できる。「・方向の反転・移動」の「・・方向の反転」を参照。

 ゼロが出現する際に、出現元のMC(ボード)が「-1」と指定していない場合は、「1」となるように設定している。

・・アクションの状態

 「・アクションの状態」を参照。
 ここでは、初期値として「"normal"」(通常状態)を代入している。

・・その他

・ライフ、属性:初期値は、マスクのMCにおいて設定している。初期設定、モニタリングの「・各種の初期値に関する処理」の「・・ゼロ関連」を参照。
・連鎖値、無敵時間:各種地形・敵との接触判定の「・敵との接触判定」の「・・loadの処理」、無敵時間(操作キャラクター)を参照。
・アクションに関するカウント(時間)(バスター、セイバーを除く):「カウント」の意味に関しては基礎の「・頻出する表現(AS)」の「・・カウント」を参照。
・バスター、セイバー:バスター発射セイバー発動を参照。
・チャージ関連:チャージ判定を参照。
・チップ関連:ヘッドチップボディチップフットチップを参照。
・各種エフェクトのスケール:各種エフェクトのスケールを代入している。
・幅、高さ:hitrectの「・hitrectの端の位置・幅・高さ」を参照。
・各種地形などとの接触判定:各種地形・敵との接触判定の「・各種地形との接触判定」の「・・loadの処理」を参照。

・アクションの状態

・・概要

 「_root.zero_action」は、ゼロのアクションの状態である。
 「通常状態」の場合は「"normal"」、「歩き」の場合は「"walk"」、「ジャンプ」の場合は「"jump"」、「ダッシュ」の場合は「"dash"」、…となる。

↓「_root.zero_action」とゼロのアクションの状態(歩き、ジャンプなど)が対応していることが分かる。

 それぞれのアクションの状態に関する詳細な解説は、それぞれの項目において行う。

・・アクションの移行

 上の動画にもある通り、アクションの状態は移り変わる
 この解説では、「あるアクションの状態(A)」から「別のアクションの状態(B)」になる場合、「AからBに移行する」と表現している

 例えば、「通常状態」からは、「ジャンプ」「ダッシュ」「歩き」などに移行できる。また、敵との接触判定がある場合には、「被ダメージ状態」などに移行する。

 アクションの移行に関する詳細な解説は、それぞれの項目において行う。

・方向の反転・移動

・・概要

 「アクションの状態」などにおける処理の結果、ゼロの方向や速度の値が決定される。そして、これらの値に基づき、方向の反転・移動を行う。

・・方向の反転


ASのファイル:zero.txt
 
		_parent._xscale=100*_root.zero_direction
 
・「_parent._xscale=100*_root.zero_direction」:ゼロの方向の反転を行う。参考サイト(https://hakuhin.jp/as/movieclip.html#MOVIECLIP_02)。

 「_parent._xscale」は、「_root.zero_direction=1」(ゼロが右向き)の場合、「100*1」となり、「_root.zero_direction=-1」(ゼロが左向き)の場合、「100*(-1)=-100」となる。
 このように、(条件文を記述しなくとも)「*_root.zero_direction」を作用させるだけで済むので、記述を簡略化できる。

・・移動


ASのファイル:zero.txt
 
		_parent._x+=_root.velocity_zero_x;_parent._y+=_root.velocity_zero_y	//移動(地形による位置調整の前)
 
・「_parent._x」「_parent._y」:ゼロの位置(x・y方向)。
・「_parent._x+=_root.velocity_zero_x」:ゼロの位置(x方向)を、ゼロの速度(x方向)の値だけ移動させる。参考サイト(https://hakuhin.jp/as/movieclip.html#MOVIECLIP_00)。y方向に関しても、同様の処理を行っている。

 「地形による位置調整の前」とある通り、この処理の後で、「地形による位置調整」が行われ、ゼロの最終的な位置が確定する

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