原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

音ゲー製作には必須?Koreographerを使ってみたよ

長いからいきなり本題

Unityで音楽とオブジェクトの動きを連動させたい場合「Koreographer」というアセットが有名ですが、アセットストアの中では結構高価なアセットということもあってか中々「Koreographer」を取り上げたブログ記事が少ないです。

 
Google先生に何度尋ねても「Koreographer」について詳しい使い方が載っているのは以下の記事しか見つかりませんでした。

qiita.com

なので自身の備忘録も含めて「Koreographer」について調査した内容を記事にしたいと思います。(たぶん数回にわたる)

 

Koreographerの概要

「Koreographer」がどんなアセットなのかをザックリ言えば、楽曲に合わせて事前に設定したタイミングでイベントを発行してくれるアセット、と言えます。
イベントを発行してくれるだけなので、「Koreographer」が曲に合わせてオブジェクトを飛び跳ねさせたり、色を変えたりしてくれるわけではありません。

そこらへんの動作は自分で作り込む必要があります。


楽曲(AudioClip)とKoreographerと動かしたいGameObjectの関係を図で表すと下のような感じになります。

f:id:Karvan:20180828213757p:plain

イベントを発行してくれるだけ、とはいえ、「Koreographer」ではその後の動作が作りやすいように、イベント発行時に「Payload」と呼ばれるメタデータを指定してGameObject側へ渡すことができます。


例えば、歌詞が歌われるタイミングでその歌詞を「Payload」で渡し、画面に表示するようにすればカラオケっぽいものが作れます。
(そこらへんの話は上記のリンク先でも書いてあります)

 

指定できる「Payload」の種類は以下の通り

  • Int:int値を指定
  • Float: float値を指定
  • Text: 文字列を指定
  • Curve: AnimationCurveを指定
  • Color: Colorを指定(Professional版のみ)
  • Gradient:ColorGradientを指定(Professional版のみ)

「Koreographer」にはLite版とProfessional版があり、「Payload」にColorとGradientを指定できるのはProfessional版のみとなっています。当然ながらProfessional版は結構な値段がするので用途に合わせてどちらを購入するか検討する必要があります。

 

イベントの種類

イベントの設定には専用のエディタを使用します。

専用エディタで楽曲のファイルを指定するとその波形が画面に表示されます。そこに楽曲のBPMを指定するとビートに沿ったグリッドを表示してくれるので、そのグリッドをクリックしてイベント発生のタイミングを設定します。

(つまりビートに沿ったタイミングでイベントが発行できる)

  f:id:Karvan:20180828214423p:plain

白い線がグリッドで1ビートの間隔を表しています。上の図では4ビート(1小節)単位に太い線が引かれています。

 

「Koreographer」には二種類のイベントがあります。イベント発生のタイミングを設定する際にどちらのタイプのイベントなのかを指定し、そのタイプに沿った「Payload」を使用してイベントが発行されるようにします。

  • OneOffイベント:開始タイミングのみ指定⇒使用するPayload:int,float,Text,Color
  • Spanイベント:イベントの開始と終了を指定⇒使用するPayload:Curve,Gradient

 

OneOffイベントの場合、一回だけイベントを発行します。何かの処理の開始タイミングを計りたい場合などにこのイベントを使用します。同じイベントを繰り返し発行したい場合は、その数だけエディタで指定する必要があります。


Spanイベントの場合、指定した期間内では毎フレームイベントが発行されます。徐々に変化するような動作をさせたい場合などにこのイベントを使用します。フレーム単位でイベントが発行されるので重い処理をする際には注意が必要です。また、イベントの発行がビート単位ではないことも考慮する必要があります。(私はここを勘違いしてた)

 

では実際に使ってみよう

「Koreographer」のシーンへの導入方法やスクリプトへの組み込み方などは、上記のリンク先に記載がありますし、アセットのサンプルシーンでも確認できるので省くとして、実際にエディタでイベントを設定した画像がこちら

 

f:id:Karvan:20180828214929p:plain

 

 真ん中で帯状に表示されているものがSpanイベントで、「Payload」にはGradient(徐々に色が変わる)が指定されています。

見づらいですが赤の線はOneOffイベントで「Payload」にはColorが設定されています。

 

ここまで専用エディタで設定したら、ゲームシーン内に音に合わせて動かしたいGameObjectを設置します。今回は一列に並んだCubeを使用します。

 

f:id:Karvan:20180828214403p:plain

こんな感じ

 

Spanイベントが発行されたら全てのCubeが同時にGradientに沿って色が変わるように、OneOffイベントが発行されたら先頭から順にColorの色へ変わるようにスクリプトを組みます。


それを実行した結果が下の動画になります。(注意:結構音量がデカいです)

youtu.be

 音楽はFLASH☆BEATさんのNew Departureを使用しています。

 

dova-s.jp

一つ一つは単純な動作なんですが「Koreographer」を使って楽曲に合わせてリンクさせると効果的な演出が作れると思います。

 

ただ、やっぱり高価なアセットなので購入を躊う方もいるでしょうし、もっと情報が欲しい、と思う方もいらっしゃると思うので、次回もこの「Koreographer」についての記事を書きたいと思っています。

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。