YouTubeのスーパーチャットに反応してUnity上でお札が降るようにしてみます。
1から書くわけではなく、出来合いのものを組み合わせて完成させます。
※随分前に実装したので、記憶が曖昧です。間違ってたらすみません。
#使用ツール
UnityでYoutube Liveのコメント・スパチャを取得できるツール
#完成形
スパチャでお札舞うスクリプト、今日の配信で試しに動かしたら無事に動いた。アタッチしてるオブジェクト変えたから非表示しても大丈夫。
— 大福らな🧷4/24 21:00 エヴァ同時視聴 (@daifuk_lana) April 22, 2020
ちなみにQiita初見プレイ配信、記事最後までかけませんでした・・・・・・酔って喋って終わりました・・・・・・#バーチャルモーションキャプチャー #EVMC4U pic.twitter.com/zwRxHdb95L
#方法
今回使用するツールの使い方にも書いてありますが、YoutubeCommentのBeginGetComments()関数を呼ぶことでコメント取得を開始でき、OnCommentで新しいコメントがコールバックされ、OnSuperChatでスーパーチャット投稿時にコールバックが呼ばれます。その通りに実装しますが、今回はパーティクルを呼び出して紙幣を降らせることにします。
上記使用ツールをUnityにインポートしましたら、パーティクルを実装していきます。
私はこちらを参考にパーティクルを実装しました。
実装後、使用ツールを説明に従って使用可能な状態にしておきます。
その後、スーパーチャットに反応してパーティクルを起動させるよう実装していくわけですが、インポートした使用ツールのExampleフォルダにcsファイルがありますので、こちらを改変していくのが簡単ですので、その前提で進めます。
まずクラスの開始時にParticleSystem particle;
などと宣言しておき、先程実装したパーティクルのGameObjectを代入しておきます。
particle = GameObject.Find("hogehoge").GetComponent<ParticleSystem>();
という感じでしょうか。"hogehoge"は各自のGameObject名に書き換えて下さい。updateの中ではFindしないみたいな話はここでは割愛します。
その後、Start内でparticle.Stop();
として予め対象のパーティクルを止めておきます。うまいこと設定で止められるならそれでも良いです。
そして、OnSuperChatメソッド内でparticle.Play();
(particleの部分は宣言した変数名)と書けば、スーパーチャットが飛ぶたびにパーティクルが実行されます。
YouTubeのAPIはすぐ使い切ってしまうため、そのあたりは調べるなり計算するなりで、自分が最大限使う時間を考慮して取得間隔を設定してください。
上記ツールのYouTube CommentスクリプトのGet Comment Intervalで設定して下さい(秒)。
ちなみに、24時間連続稼働の想定だと60秒に一回の取得です。
【参考】
YouTube Data APIの使用量上限について
よろしくおねがいします(酔っているのでこのへんで)