操作音を付けて完成させよう|ギミック制作、はじめの一歩 Step 4

前回のStepでは、CubeをInteractするたびに、Spot Lightの点灯と消灯を切り替えられるようにしました。

これでライトスイッチとしての基本的な動作は完成しています。

このステップでは、前回作ったライトスイッチに操作音を追加します。
つまり、CubeをInteractすると、Spot Lightの状態が切り替わると同時に、スイッチの操作音が鳴るようにします。

新しいきっかけを追加するわけではありません。同じInteractをきっかけに、ライトの切り替えと音の再生という、2つの変化を起こします。

ゆかり
ゆかり

どうして操作音を付けるんですか?

リンカ先生
リンカ先生

スイッチを操作したことがユーザーにわかりやすくなるからだよ

前回までのライトスイッチでも、ギミックとしては動いています。

ただし、ライトが照らしている場所が見えにくい場合は、スイッチを操作できたのか分かりにくいことがあります。

そこで操作音を加えると、「スイッチが反応した」ということが、音でも伝わるようになります。
このように、ユーザーの操作に対して返される反応を「フィードバック」と呼びます。

たとえば、現実のスイッチでも、押したときにボタンが動いたり、「カチッ」という音が鳴ったりしますよね。その反応によって、私たちはスイッチを押せたことを感じ取っています。

VRChatワールドのギミックでも、見た目や音によるフィードバックを加えることで、操作した手応えが生まれます。

Step4のゴール
  • ライトスイッチに操作音を追加する
  • ひとつのInteractから複数の変化を起こす
  • 音によるフィードバックの役割を理解する

操作音を用意しよう

まずは、スイッチを押したときに鳴らす音声ファイルを用意します。

短いクリック音や、スイッチが切り替わる音などが使いやすいでしょう。
実際に家のスイッチをカチカチしてみて、スマホで録音しても構いません。外部サイトなどから音声素材を入手する場合は、利用規約を確認してください。

VRChatワールドで使用できるか、配布や商用利用が許可されているかも確認しておきましょう。

私が録音したスイッチ音のファイルのダウンロードリンクを貼っておきます。
これを使っていただいても構いません。ワールドで使用していただいてもOKです。ただし、素材そのものを再配布することはご遠慮ください。

音源ファイルをダウンロード

操作音をUnityへ追加しよう

用意した音声ファイルを、UnityのProjectウィンドウへドラッグ&ドロップします。あらかじめ「Audio」というフォルダを作っておくとわかりやすいと思います。

Unityへ取り込まれた音声ファイルは、Audio Clipとして扱われます。Audio Clipは、再生する音そのものです。今回であれば、スイッチのクリック音がAudio Clipになります。

AudioClipをProjectに登録

SwitchにAudio Sourceを追加しよう

Audio Clipを再生するためには、Audio Sourceが必要です。Audio Sourceは、音を再生するためのComponentです。

リンカ先生
リンカ先生

たとえるなら、CDプレイヤー(Audio Source)に、CD(Audio Clip)をセットして音を鳴らすような関係だね💿🎵

Audio ClipとAudio Sourceの関係

CDプレイヤーに音量や再生方法の設定があるように、Audio Sourceにも、音量、ループ再生、3D空間での聞こえ方など、音をどのように鳴らすかを決める設定があります。

今回は細かい設定には触れず、まずは「Audio ClipをAudio Sourceに設定して再生する」という基本だけを使います。

Hierarchyから、前回作ったLightSwitchのCubeを選択します。
Inspector下部のAdd Componentを押し、Audio Sourceを追加してください。これで、LightSwitchのCubeに音を再生するためのAudio Sourceが追加されました。

「Audio Source」コンポーネント

Audio Clipを登録しよう

追加したAudio SourceのAudioClip欄に、先ほどUnityへ取り込んだ音声ファイルを登録します。

ProjectウィンドウにあるAudio Clipを、Audio SourceのAudioClip欄へドラッグ&ドロップしてください。

Audio SourceにAudio Clipを設定

これで、Audio Sourceが再生する音を指定できました。

ゆかり
ゆかり

CDプレイヤーにCDをセットした状態、ってことですね!

Play On AwakeをOFFにしよう

Audio Sourceには、Play On Awakeという項目があります。これは、ワールドが始まったときに自動で音を再生する設定です。

今回は、SwitchをInteractしたときだけ操作音を鳴らしたいので、Play On Awakeのチェックを外してください。チェックが入ったままだと、ワールドに入った直後に操作音が鳴ってしまいます。

Audio SourceのPlay On Awakeをオフに設定

スクリプトを修正する

Audio Sourceを指定できるようにする

次に、UdonSharpからAudio Sourceを操作できるようにします。

ProjectウィンドウにあるLightSwitchスクリプトをダブルクリックし、コードエディターで開きます。

前回のコードは、次のようになっています。

using UdonSharp;
using UnityEngine;

public class LightSwitch : UdonSharpBehaviour
{
    public Light targetLight;

    public override void Interact()
    {
        targetLight.enabled = !targetLight.enabled;
    }
}

targetLightの下に、次の1行を追加してください。

public AudioSource switchAudio;

この1行は、Inspectorから、再生するAudio Sourceを指定できるようにするための記述です。

ゆかり
ゆかり

targetLightで操作するライトを指定できるようにしたのと同じ考え方ですね

Interactされたときに音を鳴らす

続いて、SwitchがInteractされたときに音を再生する処理を追加します。

ライトを切り替える行の下に、次の1行を追加してください。

switchAudio.Play();

switchAudioは、Inspectorから指定するAudio Sourceです。
Play()は、そのAudio Sourceに登録されているAudio Clipを再生する処理です。

つまり、この1行は「指定したAudio Sourceから音を再生する」という意味です。

完成したコードは、次のようになります。

using UdonSharp;
using UnityEngine;

public class LightSwitch : UdonSharpBehaviour
{
    public Light targetLight;
    public AudioSource switchAudio;

    public override void Interact()
    {
        targetLight.enabled = !targetLight.enabled;
        switchAudio.Play();
    }
}

コードを書き換えたら、Ctrl + Sを押して保存します。

Audio SourceをInspectorへ登録しよう

Unityへ戻り、HierarchyからLightSwitchのCubeを選択します。

Udon BehaviourのInspectorに、Switch Audioという新しい登録欄が表示されていることを確認してください。
同じCubeに付けたAudio Sourceを、Switch Audio欄へ登録します。

Audio SourceのComponent部分をドラッグしてもよいですし、LightSwitchのCube自体を欄へドラッグしても登録できます。

UdonSharpにAudioが登録された状態

これで、スクリプトから操作するAudio Sourceを指定できました。

Inspectorでは、次の2つが登録されている状態になります。

  • Target Light:操作するSpot Light
  • Switch Audio:操作音を再生するAudio Source
UdonSharpにLightとAudioが登録された状態

ギミックのつながりを確認しよう

今回のLightSwitchには、次の役割があります。

LightSwitchのCube
├ Interactを受け取る
├ Spot Lightの状態を切り替える
└ Audio Sourceから操作音を鳴らす

ユーザーが操作するCubeを中心に、Spot LightとAudio Sourceがつながっています。
ここで大切なのは、ひとつのきっかけから、複数の変化を起こせるということです。今回のように処理を組み合わせることで、より手応えのあるギミックを作れるようになります。

ひとつのきっかけから複数の変化を起こす模式図

Build & Testで確認しよう

設定ができたら、Build & Testでワールドを起動します。

ワールドに入ったら、次の順番で確認してください。

  1. Spot Lightが点灯している
  2. LightSwitchのCubeに近づく
  3. CubeをInteractする
  4. Spot Lightが消える
  5. 同時に操作音が鳴る
  6. もう一度CubeをInteractする
  7. Spot Lightが点灯し、再び操作音が鳴る

何度か繰り返し操作し、ライトと音の両方が正しく反応することを確認してください。

うまく動かないときの確認

ライトは切り替わるが、音が鳴らない

次の点を確認してください。

  • LightSwitchにAudio Sourceが付いているか
  • Audio SourceのAudioClip欄にオーディオファイルが登録されているか
  • Play On AwakeがOFFになっているか
  • Udon BehaviourのSwitch Audio欄にAudio Sourceが登録されているか
  • コードにswitchAudio.Play();が追加されているか

ワールドに入った直後に音が鳴る

Audio SourceのPlay On Awakeが有効になっている可能性があります。Play On Awakeのチェックを外してください。

Audio SourceのPlay On Awakeをオフに設定

今回のギミックを振り返ろう

リンカ先生
リンカ先生

最後に今回作ったスイッチギミックを振り返ろう

今回完成したライトスイッチを、「きっかけ」と「変化」に分けてみましょう。

  • きっかけ:CubeをInteractする。
  • 変化:
    • Spot Lightの点灯と消灯を切り替える
    • Audio Sourceから操作音を再生する
ひとつのきっかけから複数の変化を起こす模式図

Step 2では、ひとつのきっかけからライトを消しました。
Step 3では、現在の状態に応じて点灯と消灯を切り替えられるようにしました。
そして今回のStep 4では、さらに音を加え、ひとつのきっかけから複数の変化を起こすようにしました。

同じギミックでも、変化を少しずつ追加することで、より分かりやすく、手応えのある体験になります。

次はどんなギミックを作る?

今回の仕組みを応用すると、ライト以外のさまざまなギミックを作れます。

たとえば、次のようなものです。

  • ミラーの表示と非表示を切り替える
  • オブジェクトを出現・消滅させる
  • 複数のライトをまとめて操作する
  • ONとOFFで別の音を鳴らす
  • Triggerの範囲に入ると自動でライトを点ける
  • Animationを使ってドアを開閉する

音量や聞こえる距離、3D空間上での聞こえ方など、音を使ったギミックについては、別の記事で詳しく扱います。

まずは今回作ったライトスイッチのSpot LightやAudio Clipを変えて、どのような違いが生まれるか試してみましょう。

ギミックの基本は、これからも同じです。

何をきっかけにして、何を変化させるのか

作りたい演出をこの2つに分けることで、次に必要な処理を考えやすくなります。

ゆかり
ゆかり

難しいところもあったけど、楽しかったです✨

リンカ先生
リンカ先生

動くものが作れるとワールド制作も一段と楽しくなるよね😊

コメント

タイトルとURLをコピーしました