・概要
敵の出現に関しては、「敵からの出現」と「敵の出現用の
hitrectからの出現」の2つのパターンがある。
敵の消滅に関しては、「ゼロなどの攻撃による敵の破壊」と「敵・
アイテムの出現判定用のMCとの
接触判定がない場合の消滅」の2つのパターンがある。
・敵からの出現
・・概要
「敵からの出現」のパターンに関して解説する。
ここでは、例として、「シグマからのシグマショットの出現」を解説する。
↓シグマからのシグマショットの出現。
「出現させる敵の名前」を設定し、「敵の出現」の処理を行う。そして、敵の位置調整を行う。
ASのファイル:enemy_sigma.txt
enemy_appearance_name="enemy_sigma_shot"
#include "zero_AS/enemy/enemy_appearance.txt"
enemy._x=_parent._x;enemy._y=_parent._y-15 //敵の位置調整
・「enemy_appearance_name」:出現させる敵の名前。
・・敵の出現
「出現させる敵の名前」において設定した敵を出現させ、「敵の番号」を伝達する。
ASのファイル:enemy_appearance.txt
for(i=1;i<=_root.i_enemy_max;i++){ //敵の出現用のループ
if(_root.enemy_identify[i-1]=="none"){ //敵の出現判定用の配列に空きがある場合
_root.board.attachMovie(enemy_appearance_name,["enemy_"+i],_root.depth_enemy+i) //敵を出現させる
enemy=_root.board["enemy_"+i] //参照先を変数に保存
enemy.enemy_hitrect.number_enemy=i //敵の番号を伝達
_root.enemy_identify[i-1]=0 //敵の出現判定用の配列にライフの初期値(0)を代入する
break //ループを離脱
}
}
「敵の出現判定用の配列にライフの初期値(0)を入れる」の処理は不要と思われるが、念の為に行っている。
・敵の出現用のhitrectからの出現
・・概要
↓敵の出現用の
hitrectからの出現。荒巻ボールの例。「ゼロなどの攻撃による敵の破壊」と「敵・
アイテムの出現判定用のMCとの
接触判定がない場合の消滅」も示している。
・・loadの処理
・・・出現させる敵の名前
↓敵の出現用の
hitrect。荒巻ボールの例。
hitrect(灰色の小さい正方形)のインスタンス名を「aramaki_ball」と設定している。
ASのファイル:enemy_appearance_hitrect.txt
enemy_appearance_name="enemy_"+this._name //出現させる敵の名前を取得
・・・敵の出現判定、敵の番号
「・・敵の出現」などを参照。
ASのファイル:enemy_appearance_hitrect.txt
enemy_appearance=0 //敵の出現判定
number_enemy=0 //敵の番号の保存用
・・・地形移動
ASのファイル:enemy_appearance_hitrect.txt
︙(省略)
・・敵の出現
「敵・アイテムの出現判定用のMC」との接触判定があり、敵の出現判定がない場合は、敵の出現に関する処理を行う。「・敵からの出現」も参照。
同時に、「(出現させた)敵の番号」を保存し、「敵の出現判定」を付加する。
ASのファイル:enemy_appearance_hitrect.txt
if(this.hitTest(_root.enemy_item_appearance_hitrect)){ //敵・アイテムの出現判定用のMCとの接触判定がある場合
if(enemy_appearance==0){ //敵の出現判定がない場合
#include "zero_AS/enemy/enemy_appearance.txt"
enemy._x=_parent._x;enemy._y=_parent._y //敵の位置調整
number_enemy=i //敵の番号を保存
enemy_appearance=1 //敵の出現判定
}
}
・・敵の出現判定のリセット
「敵・アイテムの出現判定用のMC」との接触判定がなく、出現させた敵が消滅している場合は、敵の出現判定をリセットする。この処理により、再び敵を出現させることが可能となる。
ASのファイル:enemy_appearance_hitrect.txt
else{ //敵・アイテムの出現判定用のMCとの接触判定がない場合
if(number_enemy==0){enemy_appearance=0} //出現させた敵が消滅している場合,敵の出現判定をリセット
}
・・敵の番号のリセット
出現させた敵が消滅した場合は、敵の番号をリセットする。この処理により、「・・敵の出現判定のリセット」の処理が行われることになる。
ASのファイル:enemy_appearance_hitrect.txt
if(number_enemy!=0 and _root.enemy_identify[number_enemy-1]=="none"){number_enemy=0} //出現させた敵が消滅した場合,敵の番号をリセット
・ゼロなどの攻撃による敵の破壊
・敵・アイテムの出現判定用のMCとの接触判定がない場合の消滅
・「ループの終値(敵)」の補正
ボードにおいて、「ループの終値(敵)」の補正を行っている
ASのファイル:board_enemy_reset.txt
for(i=_root.i_enemy_max;i>=1;i--){
if(_root.enemy_identify[i-1]!="none"){ //敵の出現判定が埋まっている場合
_root.i_enemy=i //ループの終値を最大の番号に合わせて補正
break //ループを離脱
}
if(i==1){_root.i_enemy=1} //ループの終値を最大の番号に合わせて補正(i=1の場合)
}
「_root.enemy_identify」が埋まっている最大の番号を、「_root.i_enemy_max」の値から遡って検索し、「_root.i_enemy」(「ループの終値(敵)」)を最大の番号に合わせて補正している。
↓「ループの終値(敵)」の補正の例。
流れとしては、以下の通りとなる。
・敵が5体出現(出現順に「enemy_1」~「enemy_5」)し、「_root.enemy_identify」の該当する箇所が埋まる。「_root.i_enemy」は、徐々に増え、「5」になる。
・「enemy_5」が破壊される。上記の処理の結果、「_root.i_enemy」は「4」に補正される。
・「enemy_3」が破壊される。ただし、「enemy_4」が残っているため、上記の処理をしても「_root.i_enemy」は「4」のままとなる。
・「enemy_4」が破壊される。上記の処理の結果、「_root.i_enemy」は「2」に補正される。
・「enemy_1」が破壊される。ただし、「enemy_2」が残っているため、上記の処理をしても「_root.i_enemy」は「2」のままとなる。
・「enemy_2」が破壊される。上記の処理の結果、「_root.i_enemy」は「1」に補正される。
最終更新:2020年12月19日 09:44