1
1

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] Timeline使って、任意のタイミングでアクションを起こす

Last updated at Posted at 2023-02-27

初めに

曲のビートのタイミングでアクションを起こす

曲とかビートとかさっぱり分からなかったので色々調べてみた。

取り合えず、こんな感じで出来た

bpm.gif

やったこと

とりあえず、下記のURLのようにプログラムで制御しても良かったのだが
unity のtimelineの制御を使ってアクションを行ってみた。

bpmの計算は下記のgitのリポジトリ使って取得してた

timelineのPlayableDirectorのコンポーネントを
Update MethodをDSPに設定して
image.png

Update Methodの説明は下記を見てください。

60フレームの所にSignal Emitterを置きタイミングでイベントが起きるように設置します。
image.png

60フレーム目に置くのは、下記を参考にちょうど1秒でイベント起きて欲しいので

BPM=60であれば、4分音符を1分間に60回刻むということですので、
時計の秒針とまったく同じ速さということになります。
と、いうことは、4分音符1つ分の長さはジャスト1秒ですね。

計算とtimelineの速度変化

    var speed = bpm / 60.0f;
    timeline.playableGraph.GetRootPlayable(0).SetSpeed(speed);

曲からbpmしらべて、unity timelineのPlayableDirectorからSetSpeedを指定します。
でデフォルトだと1.0なので60フレーム目は1秒になる(早いビードなら120bpmならspeedは2 240bpmならspeedは4)

timelineのスピードの変え方は下記参考

最後に

音ゲーみたいなの作ってみたいけど、さ、どうやって手を付けていけばいいかな?
っていつも思っているが、こんな感じでtimelineを制御すればいけるのかな?
って思ってます。下記のサイトみたいに

※ここ重要
もし、認識や考え方間違っているって所ありましたら突っ込んでください。。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?