6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Unity】自作リズムゲームに弐寺のようなソフランを実装してみる

Last updated at Posted at 2022-07-19

まず

Unityでリズムゲーム作っててめちゃくちゃ嫌だったこと。
それは、「ソフランなどと言ったギミックの情報が全く無いこと」でした。
色んなギミック譜面が作れるリズムゲームを作りたかったのに、一切その情報が無い。
なんでなん?みんな上から下に流れるだけで十分なん??自作音ゲーの譜面を弐寺みたいにソフランさせたり、太鼓みたいに超高速でノーツ飛ばしたり、Ar〇aeaみたいに訳分からん動きさせたりしたくならないんか???

この記事は、「自作リズムゲームにギミックを搭載したい!でも何も分からん!!」な人達の助けになったら良いなという目的で作りました。悩んでる時間あったら手動かして欲しいしね。

目標とする挙動

↓こんな挙動を作りたい。
testA.gif

作り方

下の画像で赤いノーツは等倍速度、青いノーツには0.25倍のソフランをかけたものです。
要はこういう配置になれば宜しいのです。
202207180029.png

ノーツの座標の出し方

私がやったやり方としてはこんな感じ↓

  1. ノーツがある小節を調べる。

  2. 小節の座標と時間を調べる。

  3. ソフランの値を取得する。

  4. ノーツの時間から小節の時間を引く(これで小節内での時間になる)。

  5. 4.で出た値を基準速度とソフランでかける。

  6. ノーツ座標が出てくるのでそれを使用する。

             float softLanding;   //ソフランの値
             float baseSpeed;    //基準となるスクロール速度
             float measureTiming;  //小節の開始時刻
             float measurePos;    //小節の座標
             float  noteTiming;    //ノーツの判定時間
             float notePos;     //ノーツの座標
             
             var distance = (noteTiming - measureTiming);
             notePos     = measurePos + (distance * baseSpeed * softLanding);
    

レーンのスクロールの仕方

小節の1拍目の座標から次の小節の座標まで、Lerpで動かしてあげるのです。
正規化の方法が地味に分からなかった。数学難しい……

            float musicTime;      //曲の再生位置
            float measurePosBegin;  //小節の座標
            float measurePosEnd;   //次の小節の座標
            float normalize;     //正規化


            normalize = (musicTime- measurePosBegin) / (measurePosEnd - measurePosBegin);
            Vector3.Lerp(measurePosBegin, measurePosEnd, normalize);

これらをListとかifやforを駆使して実装すれば、それっぽいものになると思います。
testB.gif
見て、ノーツがぴょんぴょんしてるよ!かわいいね

終わり

書いてて思いましたけど、このコードまだまだ改装出来そうですね。
「小節とノーツの座標取得二度手間では?」とか、「baseSpeedを少し弄れば太鼓のソフランも実装出来そう」とか。
因みにスクロール方法ですが、今のままだと1/64拍子とかにしたら目に見えてカクついてしまう(処理落ちではない)ので、そこ含めて次リズムゲーム作った際には別の方法を模索してみようと思います。
もっとみんなリズムゲーム作れ、そして情報共有しろ

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?