※ 引述《joe820730 (Let it go)》之銘言:
: 以上的方法很好處理,而且可以在一些趣味性質的譜面設計一些超高速的Note來搞初見殺
: 但是如果要做到整個譜面瞬間停止的效果我就沒想法了
: 所謂的瞬間停止可以參考:https://youtu.be/nNDqedR2qq4?t=73
沒想到有一天會看到自家遊戲在版上被cue,手癢忍不住來回一下XD。
上面aegis123321大回的那一篇和Lanota的實作方式非常相似,我就補充一下實作細節。
實作方法就是使用絕對位置相減來求判定點與Note的相對位置,
而非試圖直接求相對位置,這樣有助於簡化問題。
若令時間->絕對位置函數為Pos(t),則相對位置NPOS可以表示成
NPOS = Pos(NT)-Pos(CT)
這樣做的好處是Pos(t)實作可以非常單純,
做法就是在譜面中紀錄一個帶有時間點的變速表(如:3秒時變2倍快),
方便建立時間->速度函數,我們先叫他Speed(t),
那麼Pos(t)就只是將Speed(t)積分起來而已,實際上Speed(t)看起來會像是長條圖,
所以積分也就只是算長方形面積累加而已,程式上一個for迴圈就搞定了。