・概要
アイテム本体の処理に関して解説する。
なお、全てのアイテムで共通の処理を行っている。
↓アイテム本体と、アイテムの取得。
原作とは異なり、「ライフ回復の際の一時停止」の処理は行わない(ロックマン&フォルテなどと同じ仕様)。
・loadの処理
・・アイテムの番号、アイテムの名前
「アイテムの番号」は、アイテムの出現時に割り当てられる、アイテムの固有の番号のことである。
「アイテムの名前」は、アイテムの種類であり、「・・ライフ回復量、エレメント残量回復量、リトライ増加量」の処理などにおいて用いられる。
↓アイテムのMCの例(ライフ回復(大))。
hitrectのインスタンス名を「アイテムの名前」(この場合は"life_recovery_big")と設定している。
ASのファイル:item.txt
number_item //アイテムの番号
item_name=this._name //アイテムの名前
・・速度
「・重力加速度の付加」「・移動」を参照。
ASのファイル:item.txt
velocity_item=0 //アイテムの速度
・・ライフ回復量、エレメント残量回復量、リトライ増加量
ライフ回復量、エレメント残量回復量、リトライ増加量を設定する。初期値は「0」となる。
「アイテムの名前」により、それぞれの値が異なる。
ASのファイル:item.txt
life_recovery=0 //ライフ回復量
element_recovery=0 //エレメント残量回復量
add_retry=0 //リトライ増加量
if(item_name=="life_recovery_small"){life_recovery=8} //ライフ回復(小)
︙
・・各種地形との接触判定
ASのファイル:item.txt
for(i=1;i<=_root.i_landform_name_max;i++){this["hit_"+_root.landform_name_list[i-1]]=0}
・重力加速度の付加
重力加速度を付加する。また、落下速度の制限の処理を行う。
ASのファイル:item.txt
velocity_item+=_root.gravity //重力加速度を付加
if(velocity_item>_root.velocity_zero_jump){velocity_item=_root.velocity_zero_jump} //落下速度の制限
・移動
各種地形との接触判定がない場合は、移動する。
ASのファイル:item.txt
if(hit_floor==0 and hit_sloped_floor==0 and hit_sink==0){_parent._y+=velocity_item} //移動(地形による位置調整の前)
・各種地形との接触判定
接触判定は1回のみ取得するようにしている。これは、(地形の出現判定用のMCとの接触判定がない場合など)地形が消滅した場合に、位置を固定するための措置となる。また、負荷軽減に関しても有効と思われる。
このような条件にしているため、アイテムは
地形移動などの影響を無視する。
ASのファイル:item.txt
if(hit_floor==0 and hit_sloped_floor==0 and hit_sink==0){ //接触判定は1回のみ取得する
︙
}
・敵からのアイテムドロップの場合の消滅
敵からのアイテムドロップの場合は、「敵・アイテムの出現判定用のMC」との接触判定がない場合に、出現判定をリセットし、MCを削除する。
ASのファイル:item.txt
if(_root.item_identify[number_item-1]==2 and this.hitTest(_root.enemy_item_appearance_hitrect)==false){_root.item_identify[number_item-1]=0;_parent.removeMovieClip()} //敵からのアイテムドロップの場合・敵・アイテムの出現判定用のMCとの接触判定がない場合,出現判定をリセット,MCを削除
・ゼロとの接触判定
・・概要
ゼロとの接触判定がある場合の処理に関して解説する。
シャドウ
ダッシュに関しては、
フットチップの「・シャドウダッシュ」の「・・アイテムとゼロとの接触判定」を参照。
前提となる条件は、以下の通りとなる。
ASのファイル:item.txt
if(this.hitTest(_root.board.zero.zero_hitrect)){ //ゼロとの接触判定がある場合
︙
}
・・ライフの回復
ゼロが全回復している場合に、サブタンクの残量が最大値ではない場合は、サブタンクを溜める。サブタンクの最大値より大きい場合は、補正する。
ゼロが全回復していない場合は、ライフを回復させる。ゼロのライフの最大値より大きい場合は、補正する。
ASのファイル:item.txt
if(_root.zero_life==_root.zero_initial_life){ //ゼロが全回復している場合
if(_root.zero_subtank<_root.zero_subtank_max){_root.zero_subtank+=life_recovery} //サブタンクの残量が最大値ではない場合,サブタンクを溜める
if(_root.zero_subtank>_root.zero_subtank_max){_root.zero_subtank=_root.zero_subtank_max} //最大値より大きい場合,補正する
}
else{
_root.zero_life+=life_recovery //ライフを回復させる
if(_root.zero_life>_root.zero_initial_life){_root.zero_life=_root.zero_initial_life} //最大値より大きい場合,補正する
}
・・エレメント残量の回復
「選択している属性」のエレメント残量を回復させる。エレメント残量の最大値より大きい場合は、補正する。
ASのファイル:item.txt
_root["zero_element_remainder_"+_root.zero_element]+=element_recovery //エレメント残量を回復させる
if(_root["zero_element_remainder_"+_root.zero_element]>_root.zero_initial_element_remainder){_root["zero_element_remainder_"+_root.zero_element]=_root.zero_initial_element_remainder} //最大値より大きい場合,補正する
・・リトライの増加
リトライを増加させる。リトライの最大値より大きい場合は、補正する。
ASのファイル:item.txt
_root.zero_retry+=add_retry //リトライを増加させる
if(_root.zero_retry>_root.zero_retry_max){_root.zero_retry=_root.zero_retry_max} //最大値より大きい場合,補正する
・・アイテムの消滅
アイテムの消滅エフェクトを付加し、出現判定をリセットし、MCを削除する。
ASのファイル:item.txt
_root.board.attachMovie(["item_"+item_name+"_vanish"],["effect_"+_root.depth_effect_universal],_root.depth_effect_universal) //アイテムの消滅エフェクトを付加
︙
_root.item_identify[number_item-1]=0;_parent.removeMovieClip() //出現判定をリセット,MCを削除
最終更新:2020年12月12日 11:38