2020年08月18日
こんにちは、フリーソフトの作者などを趣味でやっている「わびさび@WabisabiApp」です。 Unity アセット真夏のアドベントカレンダー 2020 Summer! 08月18日の記事になります。
最近どんどん進化していっている、バーチャルのSNSサービスのclusterのワールドでも花火を使いたい!!
いい感じで簡単に組み込めました。プレビューで音も鳴っているのでバッチリです。
よし、うまくアップロードできて花火も表示されたぞ!!
昨年にも「KTK Fireworks Effects Volume1」 を紹介させていただきましたが、その時はclusterのワールドで使用しても音が鳴っていたのですが、最近の「Cluster Creator Kit」では音が鳴らなくなっていました。
clusterのワールドではスクリプトが基本的に動作しないようになっています。オブジェクトにスクリプトをアタッチしていた場合、 参照は残るようですが、スクリプト(.cs)ファイル自体がアップロードもされないそうなので全く動作しません。
「KTK Fireworks Effects Volume1」 のPrefabを見てみると、"Sound Play Time(Script)"というスクリプトで音声再生が行われていました。
せっかく音声まで含んでくれているアセットなのに音が鳴らないのは少し残念です。
(´;ω;`)ウッ…。
ありがたい事に、スクリプトではそこまで難しい事はやっていませんでした。
回数 | 音を出すタイミング |
---|---|
1回目 | (A)秒待ってから鳴らす |
2回目 | (B)秒待ってから鳴らす |
3回目 | (B)秒待ってから鳴らす |
4回目 | (B)秒待ってから鳴らす |
とこんな感じです。
指定時間後のパラメータ(A)は最初の1回目だけ使われていて、2回目以降は(B)の時間のみが使われてました。
何でも良いのですが"Eff_FireWorks_00_loop(Prefab)"に作成したアニメーションを追加していってみます。
「Eff_FireWorks_00_loop/se_shot」にAnimationを追加します。se_shotはwaitTimeが0なので、 Animationは1つだけです。
「Eff_FireWorks_00_loop/se_burst1」にAnimationを追加します。se_burst1はwaitTimeが2.5秒の後で2秒のループに入るので Animationを2つ作成して繋いでおきます。
こんな感じで1つ目のアニメーションが終わったら直ぐに2つ目のアニメーションに遷移させます。
「Eff_FireWorks_00_loop/se_burst2」と「Eff_FireWorks_00_loop/se_burst3」は「Eff_FireWorks_00_loop/se_burst1」と同様に追加します。
Eff_FireWorks_00_loop |- oneShot1 |- se_shot | |- se_shot ← Animator(Controler) | |- Animation(se_brust2) ← Animation | |- se_brust1 | |- se_brust1 ← Animator(Controler) | |- Animation(se_brust1) ← Animation | |- Animation(se_brust1 - loop) ← Animation | |- se_brust2 | |- se_brust2 ← Animator(Controler) | |- Animation(se_brust2) ← Animation | |- Animation(se_brust2 - loop) ← Animation | |- se_brust3 |- se_brust3 ← Animator(Controler) |- Animation(se_brust2) ← Animation |- Animation(se_brust2 - loop) ← Animation
se_shotだけ単純なループなので1種類、それ以外は2種類用意します。
Value Name | se_shot | se_brust1 | se_brust2 | se_brust3 |
---|---|---|---|---|
waitTime | 0秒 | 2.5秒 | 2.7秒 | 2.9秒 |
loop Wait Time | 2秒 | 2秒 | 2秒 | 2秒 |
「Ctrl」 + 「6」キーを押すとAnimationのウインドウが開きます。
"Add Property"で"Animation(se_brust1)"に「Audio Source」→「Enabled」と「Play On Awake」を追加していきます。
"se_brust1"はwaitTimeが2.5秒、loop Wait Timeが2秒なので、以下のようにKeyを追加していきます。
Property | 0秒(0) | 2.5秒(150) | 4.5秒(270) |
---|---|---|---|
Audio Source.Enable | 0 | 1 | 0 |
Audio Source.Play On Awake | 1 | 1 | 0 |
Propertyの数値はフレーム番号です。(フレームレートが60フレームの場合は、2.5秒は 60 x 2.5 = 150となります。) これで、2.5秒でEnableが1になる事で音がなり、2秒間待機します。
"Add Property"で"Animation(se_brust1 - loop)"に「Audio Source」→「Enabled」と「Play On Awake」を追加していきます。
loop Wait Timeが2秒なので、以下のようにKeyを追加していきます。
Property | 0秒(0) | 0.083秒(5) | 2秒(120) |
---|---|---|---|
Audio Source.Enable | 0 | 1 | 0 |
Audio Source.Play On Awake | 1 | 1 | 0 |
これで、0.083秒でEnableが1になる事で音がなり、2秒後にEnableが0になります。これをループさせる事で以下の表のような2回目以降の音を出します。 (0のタイミングで、Enableにを1にするとうまく音がならなかったので、5のタイミングで鳴らすようにしました。 → どうして?)
回数 | 音を出すタイミング |
---|---|
1回目 | (A)秒待ってから鳴らす |
2回目 | (B)秒待ってから鳴らす |
3回目 | (B)秒待ってから鳴らす |
4回目 | (B)秒待ってから鳴らす |
先に説明した"se_brust1"と同じように、以下を設定していきます。
Value Name | se_shot | se_brust1 | se_brust2 | se_brust3 |
---|---|---|---|---|
waitTime | 0(0) | 2.5(150) | 2.7(162) | 2.9(174) |
loop Wait Time | 2(120) | 2(120) | 2(120) | 2(120) |
お疲れ様でした!!
やったー。clusterのワールドで花火の音が鳴ったよー。
花火のアセットKTK Fireworks Effects Volume1を設置してみました。
簡単に花火が設置できるので、VRChatやclusterのワールドなどに設置すると夏らしいワールドが簡単に作成できます。 「KTK Fireworks Effects Volume1」気になってたけど、 clusterのワールドでも使えるか分からないなど購入をためらっていた方は是非とも購入してみてください。音が鳴らなくても見ているだけでもきれいです。
少し、Unityと仲良くなれば、音も鳴らせるようになりますよ❤。
(この記事は「FavDoc」で作成しました。)
では、明日は「にしあぷ」さんお願いします。