Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

YouTube APIでSuperChatを取得してUnity上でお札を降らせる

YouTubeのスーパーチャットに反応してUnity上でお札が降るようにしてみます。
1から書くわけではなく、出来合いのものを組み合わせて完成させます。

※随分前に実装したので、記憶が曖昧です。間違ってたらすみません。

使用ツール

UnityでYoutube Liveのコメント・スパチャを取得できるツール

完成形

方法

今回使用するツールの使い方にも書いてありますが、YoutubeCommentのBeginGetComments()関数を呼ぶことでコメント取得を開始でき、OnCommentで新しいコメントがコールバックされ、OnSuperChatでスーパーチャット投稿時にコールバックが呼ばれます。その通りに実装しますが、今回はパーティクルを呼び出して紙幣を降らせることにします。

上記使用ツールをUnityにインポートしましたら、パーティクルを実装していきます。
私はこちらを参考にパーティクルを実装しました。

【Unity】パーティクルで紙ふぶきを散らす

実装後、使用ツールを説明に従って使用可能な状態にしておきます。

その後、スーパーチャットに反応してパーティクルを起動させるよう実装していくわけですが、インポートした使用ツールのExampleフォルダにcsファイルがありますので、こちらを改変していくのが簡単ですので、その前提で進めます。
image.png

まずクラスの開始時に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の使用量上限について

よろしくおねがいします(酔っているのでこのへんで)

daifuk-lana
Vライバー #大福らな🧷 実写動画やゲーム配信で活動中‼️イラストは #らなあーと✨ FANBOX http://bit.ly/2DJ2mx4 公式 http://bit.ly/2FlPDmi マシュマロ http://bit.ly/2TBkcIK ほしい物 http://bit.ly/2VBAu6o
https://pachelam.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away