※ 引述《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循环就搞定了。