・概要
基本的な処理は、
敵 とほぼ同様である。
ここでは、ボスに特有の処理に関して解説する。
ボスの個別の解説に関しては、それぞれのボスの項目を参照。
・ボスを制作するにあたっての個人的な思想
・・アドリブ性の要求
ボスの行動への対処には、”ある程度”のアドリブ性が要求される ようにしている。
・ボスのアクションの選択には、ランダム性を持たせている 。
・ゼロの位置・ボスの位置などの変化に合わせて、攻撃などへの対応の方法が変化する ようにしている。
・ボスのライフの変化に応じて、速度・ダメージ・範囲などが変化する攻撃 がある。
・ボスがEX(使用回数に制限がある特殊な攻撃)を使用する前後で、ボスの行動が変化する 場合がある。
このような思想があるため、個人的には、「パターンハメなどで容易に撃破できるボス」「攻撃などの位置が固定されたボス」「アクションの順序が固定されたボス」をあまり好まない。
ただし、”ある程度”の規則性を持たせる場合もある(「特定のアクション」をn回行うごとに、「(別の)特定のアクション」を行う、など)。これは、理不尽な難易度にならないようにするための措置となる。
・・バランス調整
ボスに関しては「バランス調整」が極めて重要となる (一応、雑魚も重要だが)。
・ボスには、”ある程度”の隙をもたせる 。ただし、長すぎても良くない。
・特定の条件(特定の状況で弱点属性での攻撃をヒットさせるなど)が満たされた場合に、攻撃チャンスが発生する ようにしている。
・ボスの攻撃のダメージ・範囲などの調整も重要となる 。
極めて良くないことだとは思うが、テストプレイを繰り返す過程で、制作者がボスに慣れすぎてしまい、ついつい、ボスの強さを上方修正してしまう 場合がある。これは本当に良くない…。
・ボスの出現
ボスの場合は、「ボス判定」を付加する 。この判定は、連鎖値の処理などで用いられる。
ASのファイル:boss_appearance_hitrect.txt
enemy_appearance_name="boss_" +this ._name //敵の名前を取得
#include "zero_AS/enemy/enemy_appearance.txt"
enemy._x =_parent ._x ;enemy._y =_parent ._y //敵の位置調整
enemy.enemy_hitrect .boss_identify =1 //ボス判定(0:ボス以外,1:ボス)
・loadの処理
・・概要
基本的な処理は、
敵 とほぼ同様だが、ボスに特有の変数も存在する。
これらの値は、他のMC(ボスが出現させた敵、ボスのライフゲージなど)から参照される 。
・・ボスの敵の番号
「ボスの敵の番号」に「敵の番号」を代入する 。
ASのファイル:ボスのload のAS
_root .boss_number =number_enemy //ボスの敵の番号
・・ボスの位置
「ボスの位置」を保存するための変数 である。
ASのファイル:ボスのload のAS
_root .boss_x =_parent ._x ;_root .boss_y =_parent ._y //ボスの位置
・・ボスのライフ
「ボスのライフの初期値」「ボスのライフ」にライフを代入する 。
ASのファイル:ボスのload のAS
_root .enemy_identify [ number_enemy-1 ] =256 //敵の出現判定用の配列にライフを代入する
_root .boss_initial_life =_root .enemy_identify [ number_enemy-1 ] //ボスのライフの初期値
_root .boss_life =_root .boss_initial_life //ボスのライフ
・ボスと攻撃との接触判定がある場合の処理
敵と攻撃との接触判定がある場合の処理 とほぼ同様の処理をしているが、ボスの場合は、
ゼロが破壊されていない場合にのみ処理を行う (ゼロが破壊された後にボスが破壊されないようにするため)。
ASのファイル:ボスのAS
if ( _root .zero_life > 0 ) { //ゼロが破壊されていない場合
︙
}
・ガード
・・概要
ボスの場合、ボス以外とは無敵時間が異なるため、
敵 の「・頻出する処理」の「・・ガード判定」のような処理を行うことができない。そこで、
「ガード用のMC」を出現させる ことで対処している。
↓アジールフライヤーの突進の「ガード用のMC」。hitrectの大きさ等はボス本体に合わせている。
・・ガード用のMCの出現
ガード用のMCを出現させる 。
ASのファイル:boss_agile_flyer_action_rush.txt
enemy_appearance_name="boss_agile_flyer_rush_guard"
#include "zero_AS/enemy/enemy_appearance.txt"
guard_MC=enemy //参照先を変数に保存
・・ガード用のMCの位置調整
ボスの位置調整の処理の後で、ガード用のMCの位置調整を行う 。
ASのファイル:boss_agile_flyer.txt
if ( _root .boss_action =="rush" ) { guard_MC._x =_parent ._x ;guard_MC._y =_parent ._y } //ガード用のMCの位置調整
else { guard_MC="none" }
・・ガード用のMCの消滅
特定の条件が満たされた場合は、消滅させる 。
ASのファイル:boss_agile_flyer_rush_guard.txt
if ( _root .boss_action ! ="rush" or enemy_break=="other" ) { _root .enemy_identify [ number_enemy-1 ] ="none" ;_parent .removeMovieClip ( ) } //ボスのアクションの状態が突進ではない場合,破壊判定がある場合,消滅
・その他
・・ボスの位置
ボスの位置を保存する。
ASのファイル:ボスのAS
_root .boss_x =_parent ._x ;_root .boss_y =_parent ._y //ボスの位置を保存
・・ボスのライフ
ボスのライフを代入する。
ASのファイル:ボスのAS
_root .boss_life =_root .enemy_identify [ number_enemy-1 ] //ボスのライフを代入
最終更新:2020年12月19日 09:15