初めに
曲のビートのタイミングでアクションを起こす
曲とかビートとかさっぱり分からなかったので色々調べてみた。
取り合えず、こんな感じで出来た
やったこと
とりあえず、下記のURLのようにプログラムで制御しても良かったのだが
unity のtimelineの制御を使ってアクションを行ってみた。
bpmの計算は下記のgitのリポジトリ使って取得してた
timelineのPlayableDirectorのコンポーネントを
Update MethodをDSPに設定して
Update Methodの説明は下記を見てください。
60フレームの所にSignal Emitterを置きタイミングでイベントが起きるように設置します。
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を制御すればいけるのかな?
って思ってます。下記のサイトみたいに
※ここ重要
もし、認識や考え方間違っているって所ありましたら突っ込んでください。。