【Unity 2Dゲーム入門】Flappy Bird Gameをカスタマイズする(2/4)

サウンドを追加しVisual Scriptingで音を鳴らす

Posted by 51n1 on 17 Jul, 2021

もくじ

1. オリジナル2Dアートの制作とUnityでの適用
2. サウンドを追加しVisual Scriptingで音を鳴らす
3. Visual Scriptingでゲームステータスを管理する
4. Script Graphまとめ

ゲーム効果音を追加する

サウンドファイルの取り込み

プレイヤーキャラクターのジャンプ音、スコアアップする際の通過音、ゲームオーバー時の衝突音の3種類の効果音(SE)を追加する。SE用のサウンドはフリー素材を使うことにする。今回使用したサウンド素材は「 PANICPUMPKIN」から入手した。( 2.1)

2.1 PANICPUMPKIN

ProjectウィンドウでAssets配下にSoundsフォルダを作成し、入手した効果音のサウンドファイルをドラッグ&ドロップしアセットとしてインポートする。サウンドアセットの場合、特に設定を弄ることはないと思うが、Inspectorウィンドウの下部の波形グラフの近くにある再生ボタンをクリックして正しく音が鳴るかどうかチェックしておけばよいだろう。( 2.2, 2.3)

2.2 Sounds - Assets

2.3 Audio - Inspector

通常、Unityで任意のイベントの発生タイミングでサウンドを鳴らしたい場合、C#スクリプトを作成しAudioClipオブジェクトでサウンドソースを指定してAudioSourceのPlayやPlayOneShot等のメソッドを実行して呼び出す形になる。C#スクリプトでサウンドを鳴らす時の初歩的なコードを参考に記載しておく。

C#スクリプトサンプル(抜粋)

[SerializeField] AudioClip crashExplosion;
AudioSource audioSource;

void Start()
{
  audioSource = GetComponent();
}

void StartCrashSE()
{
  audioSource.Stop();
  audioSource.PlayOneShot(crashExplosion);
}

Visual Scriptingによるサウンドの実装

基本的にはVisual ScriptingでもC#のコードと同様の処理をノードで組み立てることになる。各サウンドをVisual Scriptingで実装する。

ジャンプ音 (Jump)

まずはBirdゲームオブジェクトにAudioSourceコンポーネントを追加しておく。後でも変更できるが、ここでVolumeの大きさを設定する。効果音なので少し小さめに変更する。( 2.4)

ジャンプ処理はこのBirdゲームオブジェクトのScript Machineに設定されているBird Script Graphに実装されている。ジャンプ処理の最後にジャンプの効果音を鳴らすユニットを追加する。追加したのは2種類のユニットで、StopユニットとPlay One Shotユニットである。ジャンプ音が多重に鳴らないようサウンド発生前にStopユニットを追加している。Play One ShotユニットのClipパラメータにジャンプ音のアセットを指定する。( 2.5)

2.4 Audio Source Component - Bird GameObject

2.5 Jump Sound - Bird Script Graph

ゲームオーバー時の衝突音 (Collision)

障害物と衝突する際のゲームオーバー処理もジャンプ処理と同じくBirdゲームオブジェクトのBird Script Graphに実装しているので同様に追加する。Play One Shotユニットのみ追加し、Clipパラメータに衝突音のアセットを指定する。( 2.6)

Play One Shotユニットを追加しただけだと、ゲームオーバーになっても障害物にヒットするとサウンドが何回でも発生してしまう。Game Over処理のGraph内にゲームオーバー判定を付けてサウンド発生を抑制する。( 2.7)

2.6 Collision Sound - Bird Script Graph

2.7 Is the Game Over? - Bird Script Graph

障害物を通過する際のスコアアップ音 (ScoreUp)

このゲームは障害物を無事通過できるとスコアアップされる。その際の効果音を設定する。スコアアップの処理はGameControllerゲームオブジェクトのScript Machineに設定されているGameControl Script Graphに実装されている。

GameControllerゲームオブジェクトにAudioSourceコンポーネントを追加し、GameControl Script Graphのスコアアップ処理の最後にPlay One Shotユニットを追加し、Clipパラメータに通過音のアセットを指定する。( 2.8)

2.8 ScoreUp Sound - GameControl Script Graph

以上が、Visual Scriptingにて3種類のサウンドを設定する手順となる。凝った処理をしないのであれば、サウンドの追加は特に難しくもないだろう。

下記はサウンド追加後のゲームプレイビデオである。( 2.9)

2.9 サウンド追加後のゲームプレイビデオ