ロングノーツを実装したい
最近音ゲーにはまって音ゲー作っているのでロングノーツの考察をします。
ロングノーツとは
ほとんどの音ゲーに存在している(要出典)長いノーツ。たいてい押し続けることが要求される。太鼓は違うけど。
たたくだけのノーツと違ってちゃんと実装考えなきゃいけない。
ロングノーツの種類
ロングノーツは判定で二つの種類に分かれそう
arcaea/CHUNITHMみたいなやつとIIDXみたいなやつです。
要は途中で手を放してもセーフかアウトかみたいな感じです。
arcaeaはロングノーツの判定めっちゃガバガバなので多分コンボが増える時ぐらいしか判定してなさそう。そもそも先端の判定もかなり緩いです。
巷で聞く話ではCHUNITHMも少しは離していいらしいです。
一方でIIDXはコンボ増えるタイミングは先端と後端しかないものの、その間一度でも手を放したらおさらばです。
つらいですね。
実装するとしたら...
まあ後者のほうが簡単かもしれない。Update関数内でロングノーツの先端から終端の時間の間だけ押し続けているかどうかInput.GetKeyで確かめればいいので。
前者を実装するには、ロングノーツをBPM依存かなんかのある間隔の縦連ノーツとして読み替えて、Input.GetKeyDownだけじゃなくてInput.GetKeyでも判定できるように実装すればいい感じに見える。明らかにこっちのほうがめんどくさい。
チュウニズムとかロングノーツの途中で判定音が鳴るので多分こんなことやってそう
あとがき
前者にしろ後者にしろ、まあ実装してみて考えようと思います。
そもそも現状ロングノーツの生成が、ノーツのScaleを引き延ばして並べる感じで生成しているので、これもあんま面白くないというかよくなさそうなのでこれから改善しなきゃいけなさそう。