*改造Tips [#f8313908] #contents **Dan★Oniソース概要 [#oe66801e] ParaFla!ソース ver fd 3.12.9の場合。~ 他のソースでは多少違いがある場合がある。~ ***矢印・フリーズアローの生成ルール [#t8f61bc1] -名前の決め方~ #ref(arrowName.png,around) #clear --赤色 (矢印かフリーズアローか)~ "f"という文字があればフリーズアロー、なければ矢印。~ ~ --青色 (どの矢印か)~ これは基本的に以下のようになっている。~ 「le」⇒左、「led」⇒左矢印、「do」⇒下、「oni」⇒おにぎり、~ 「up」⇒上、「rid」⇒右矢印、「ri」⇒右、~ 「le2」⇒左(2)、「do2」⇒下(2)、「up2」⇒上(2)、「ri2」⇒右(2)、~ 「gor」⇒ギコ、「iyo」⇒いよう~ ~ --黄色 (その矢印の中で何番目か)~ スタートから何番目の矢印かということ。~ 矢印の被り回避の際に、どの矢印かを特定するのに用いる。~ ~ -必要な項目 |Arrow|Frz|名称|内容| |◆|◆|setflg|判定が行われたかどうかのフラグ。初めはfalse。| |◆|◆|cnt|ステップゾーンに到達するまでのフレーム数。&br;1x, 400pxなら200frame。| |◆|◆|bstcnt|Sp.Motionで使用するフレーム数。&br;上のcntからストップする間のフレーム数を引いたもの。| |◆|◆|_alpha|矢印の透明度。Appearanceで用いる。| |◆|◆|moveY|ステップゾーンまでの距離。&br;400pxなら基本400になるが誤差もある。| |◆|◆|spd|矢印個別にかかる倍速。譜面データで言うところのboost_data。&br;初期倍速や途中変速で使われるような一斉倍速ではない。| |◆|◆|_y|矢印の初期出現位置。&br;Reverse, Halfwayなどにより場所が変わる。| |◆|◆|onEnterFrame|矢印・フリーズアローを動作させる関数を入れておく。| ||◆|fLength|フリーズアローの長さ| ~ フリーズアローについては別途内部で長さ・色に関する設定が必要。~ 始点・終点と帯の3箇所に分かれている。~ #ref(frzArrow.png,around) #clear ***矢印・フリーズアローの動作ルール(共通) [#t8d3c77f] 1フレームで矢印が動く距離は以下の通り。 -(初期倍速)×(途中変速)×(個別加速)+Sp.Motion差分 --初期倍速~ オプション画面で選択するスピード。~ ~ --途中変速~ プレイの途中で変速するもののうち、全体で変化する倍速。~ ~ --個別加速~ プレイの途中で変速するもののうち、矢印個別で変化する倍速。~ ~ --Sp.Motion差分~ オプション画面でBoost/Brakeを選択した際に加速されるスピード。~ ~ -フレーム毎に行われる処理の流れ~ ~ ++矢印が動く距離を上の計算式で計算し、矢印を移動させる。~ ~ ++AppearanceがHidden/Sudden/Replaceのとき、~ 矢印・フリーズアローが画面の中央に来たら透明度を変化させる。~ ~ ++判定内に対応するキーが押されたら判定を行う(後述)。~ なお、Autoフラグが1になっている矢印はcntが0になった時点で自動判定する。~ ~ ++判定枠から外れた場合 / setflg(判定済みフラグ)がfalseのとき~ ---矢印~ ウワァンを出して判定対象の矢印を次の矢印に変える。~ ウワァンの出た矢印はその場で消去する。~ ---フリーズアロー~ イクナイを出して判定対象のフリーズアローを次のフリーズアローに変える。~ フリーズアローは消去せず色を変えておく。~ ***フリーズアローの動作ルール(その他) [#pe80d258] +通常時 ⇒ 上の手順と同じ。~ ~ +ヒット時(押しっぱなし中)~ ~ ++代替キーの設定~ フリーズアローと結びつけるキーを設定する。~ ~ ++フリーズアローの色を変える。~ ~ ++フリーズアローのバーを縮めて対の矢印を移動させる。~ フリーズアローバーの長さは"y1"で管理している。~ ~ ++途中でキーを離した場合は失敗~ ~ ++押し切った場合(y1が0未満)のときは成功~ ~ +失敗時~ ~ ++フリーズアローの色を変える。~ ~ ++対象となるフリーズアローが特定の位置へ移動するまで~ 指定されたスピードで移動させる。~ ~ ++フリーズアローを消去する。~ ***判定に関するルール [#g81c0822] +押したキーと、対応する矢印・フリーズアローとの対応付けを行う。~ ~ +現在判定する矢印・フリーズアローをチェックする。~ 現在の矢印・フリーズアローは上の名前の決め方から特定する。~ ~ +現在の矢印が判定内にあるかチェック~ cntの値を調べてチェックする。対象内であれば判定も行う。~ ~ +現在のフリーズアローが判定内にあるかチェック~ 矢印が判定内にない場合は、フリーズアローをチェックする。~ ここも同じくcntの値をチェック。判定は失敗時のみ行う。~ ~ +空押しだった場合~ 矢印・フリーズアローともに判定内でない場合は、空押しになる。~ (ステップゾーンを光らせる)~ BarDrainがEscape+の場合は、プギャー判定を行う~ (ただし、最初200フレームくらいは判定を行わない)。~ ~