注意……
今回の記事はGIFアニメが含まれるので少々重いかもしれません。ご注意ください。
はじめに
Unityアセット「Feel」にはGameObjectのプロパティの変化を別なGameObjectに通知できるMMRadioという機能があります。
(拙いながら解説記事を書きましたので、MMRadioとは? という方はそちらを先にお読みいただければ幸いです)
やや応用的な使い方として、例えばサイン波等の信号を出力しそれをMMRadioReceiverで受信・反応させるための仕組みが用意されています。この出力を行うのがこれから紹介するMMRadioSignalです。
今回の記事では使い方の説明も兼ねて、MMRadioSignalを利用したリズミカルな演出を作ってみます。
演出作り
リズミカルということで、適当にいろいろ絵を描いて下のようなライブステージっぽい画面を用意。ダンサー、スポットライト、スピーカーとそのウーファー(真ん中の丸いところ)はそれぞれ別なSpriteになっています。
さっそくMMRadioSignalを仕込みましょう。
空のGameObjectを作り、そこにMMRadioSignalGeneratorをアタッチします。デフォルトではサイン波が設定されています。
1秒間に2回くらいの振動にするため、上の方にあるDurationを1に、Signal List→Element 0→Frequencyを2にします。
同じGameObjectにMMRadioBroadcasterもアタッチして、Emitterに自身を指定、ComponentにMMRadioSignalGenerator、PropertyにCurrentLevelを指定します。これで初期設定のままならチャンネル0にサイン波が発信されます。受け取ってみましょう。
各スポットライトにMMRadioReceiverをアタッチし、TargetObjectに自身を指定。ComponentをTransformに、PropertyをeulerAngle、Modify x,y,zでzにだけチェックを入れRemap Zeroのzを-30、Oneのzを30に。
ダンサーにもMMRadioReceiverをつけてlocalScaleで受信するように指定、Relative valueを外してx軸・y軸方向に大きさが変化するようにすると……
こんな感じに動くようになりました!
動いてるオブジェクトそれぞれの設定を変更せずとも、MMRadioSignalGeneratorの設定を変えるだけで全体のテンポが変化します。MMRadioSignalGeneratorをもう一つ用意し、別なチャンネルに発信させればダンサーとスポットライトを違うリズムで動かすこともできます。
MMRadioSignalGeneratorではサイン波以外の波形で発信を行うこともできます。Signal ListのSignal Typeから選択できます。
今回はパルス波を選択し、左右ウーファーの大きさに割り当て。発信チャンネルを変えるかBroadcast On Channelのチェックを外してReceiversにウーファーのGameObjectを割り当てるのを忘れないようにします。
さらにパーティクルを一つこさえて、各ウーファーにMMFPlayerをアタッチ。Feedbackの"Paritcles Instatiation"で、再生時にこのパーティクルを発生させるようにします。
そして先程のパルス波を発生させているMMRadioSignalGeneratorで、値の変更に伴って呼ばれるOn Value ChangeイベントでウーファーのMMFPlayerからPlayFeedbacks()を呼び出すように指定。

これで……
よりにぎやかな演出になりました。
おわりに
以上MMRadioSignalの紹介でした。
使い方のチュートリアルというよりは使用例のような記事になってしまいましたが、これを読んで面白い演出・応用を思いついていただければ幸いです。
今後もFeelの機能で日本語の資料がまだあまりないものについて解説記事を書いていければと思います。



