以前個別に行っていたときのDanOniの改造メモを
まとめてみるテスト。
メモの切り貼りなので書き方がざっくりなのはご容赦ください。
今回は「矢印を好きなタイミングで挿入する」方法。
SasaさんのGenesisという作品で使われています。
使用可能バージョン: ver fd 3.0.0 以上
◆ 目的
途中で矢印を好きなタイミングで挿入したい。
◆ 案
[1]
mkArrow[256]=[0,3]; → 256フレームで、左矢印とおにぎりを「出現」させる
「出現」というのが問題で、
ステップゾーンに来るタイミングとは異なります。
このソースでは矢印の速度ごとに矢印が出現してから消えるまでの時間が違います。
例えば、1倍速なら1フレームあたりのスピードは厳密には2なので
縦のサイズを400px とするなら
1倍速なら 400px /2 = 200フレーム
1.5倍速なら 400px /3 = 133フレーム
2倍速なら 400px /4 = 100フレーム
なことになります。
ところで、現時点のスピードは”setSpd”で取ることができます。
(厳密には setSpd[途中変速]×bstSpd[個別加速] )
ということは、速度が不変なら、
ステップゾーンのタイミングを frameNum とすれば
矢印が出現するフレームは
frameNum – 400/setSpd
で計算できることになります。
フレーム数は整数が絶対なので、整数にする関数を使って
frameNum – math.round(400/setSpd)
となりますね。
つまり、結局は
mkArrow[frameNum – math.round(400/setSpd)] = [0, 3];
みたいに手動で入れることができれば、目的は達成できるかと。
[2]
右側にある数字 [0, 3] とは何か?
0 → 左矢印
1 → 斜め左矢印
2 → 下矢印
3 → おにぎり
4 → 上矢印
5 → 斜め右矢印
6 → 右矢印
が対応してます。このあたりはソース全般の配列に言える話なので、
覚えておくとこのソース内では役に立ちます。
(ちなみに、7~10は9/11key用の5key部分です)
[3]
Sp.MotionとかStepArea、Correctionの影響は?
StepArea
⇒ Halfway、Sudden(→Appearance)のときは
矢印の出現~消滅までのフレーム数(以後、生存時間とする)が半分になります。
Sp.Motion
⇒ 割と難関です。
というのも、Boost/Brakeの速度も考慮されて作っているため、
この場合は上記の生存時間よりも少し短くなります。
配列化されてるので逆算はできますが、現実的ではないですね・・・。
Correction
⇒ これは最初にコレクション分をずらしてやれば良さそう。
[4]
最終的(?)な結論。
速度一定なら、他の矢印情報をパクるのが手っ取り早かった。
1番目の矢印のタイミングで、以下の情報を採取します。
var tmpJudgeY = _root.judgeY[frameNum]; // 矢印の生存時間
var tmpInitY = _root.initY[frameNum]; // ズレ調整(コレクションとは別)
var tmpBstTime = _root.bstTime[frameNum]; // Boost/Brakeにかかわる時間
次に、矢印出現のタイミングを求めておきます。
2350フレームなら:
var appearFrame = 2350-tmpJudgeY+_correction; // 矢印出現タイミング
mkArrow[appearFrame] = [2,5]; // 斜め矢印
// 矢印出現時に以下の情報が無いと落ちるので登録
_root.judgeY[appearFrame] = tmpJudgeY;
_root.initY[appearFrame] = tmpInitY;
_root.bstTime[appearFrame] = tmpBstTime;
これを必要な分用意すれば、原理的には行けそう。
最近のコメント