game
Unity3D
Unity
初心者
チュートリアル

【Unity】音を鳴らす:「はじめてのUnity」のブロック崩しを改造しながら学ぶ

はじめに

JunShimuraさんの「[超初心者向け]Unityチュートリアル「はじめてのUnity」のブロック崩しと同等をC#で ::(1)ステージ配置~(6)ブロックを手作業で並べる)」をよりゲームらしく改造する。

作成する記事は下記の通りです。

音を鳴らす準備

ゲームの演出として、BGMや効果音があるとより楽しめる。

Unityのサイトに昔からあるチュートリアル「はじめてのUnity 第3回 演出を強化しよう」(旧:Javascript) 」には「音の追加」がある。
今回はこの記事を参考にした。

音をインポート

今回使用する音をインポートします。
まず下記サイトからサウンドファイル、sound.unitypackageファイル(4.5Mbyte)を取得します。
http://tutorial.unity3d.jp/archive/my-first-unity/project/sound.unitypackage

ダウンロードしたファイルをダブルクリックしてください。下記ダイアログ画面が表示されます。
Unity_SoundAdd.png

Importボタンをクリックするとインポートが始まり、Assetsに Sound フォルダ及び以下のファイルが追加されます。
Unity_SoundAssets.png

  • BGM
  • Damage
  • Death
  • Spawn
  • Touch

これで Unity からサウンドを使用出来る形になりました。
どんな音かは、[Inspector]タブの下に再生ボタンがあるので確認してみましょう。
Unity_SoundPlay.png

接触時の音に再生するスクリプトの作成

「物が当たった時に音を再生する機能」を作成します。

HierarchyにてShiftまたはCtrlを押しながら上(TopWall)と左(LeftWall)と右(RightWall)の外壁を選択します。
Unity_SelectWall.png
[Inspector]タブで複数選択されている場合、名前は「-」になります。
[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、Scriptアセットを作成、追加します。ファイル形式はcsを選びます。
Unity_SoundScriptAdd.gif

ファイル名をHitPlaySoundとします。そうすると、Assetsの中に「HitPlaySound.cs」が出来ます。
※HとPとSは英大文字です。間違えた場合、ファイル名と中身のクラス名の両方を修正してください。
Unity_SoundScript.png

HitPlaySound.csを編集する

Assets内のHitPlaySoundスクリプト(C#のアイコン)をダブルクリックすると、エディタが開きます。
優先的に開かれるエディタは、多くの場合はMonoDevelopというソフトが起動されます。
※MonoDevelopでペーストが効かないに時はMonoDevelopを閉じ直してください。

HitPlaySound.cs
using UnityEngine;

public class HitPlaySound : MonoBehaviour {

    public AudioClip sound;

    void OnCollisionEnter(Collision collision) {
        AudioSource.PlayClipAtPoint(sound, transform.position);
    }
}

音を登録する

壁にボールが当たった音(Touch)

先程と同様にHierarchyにてShiftまたはCtrlを押しながら上(TopWall)と左(LeftWall)と右(RightWall)の外壁を選択します。
[Inspector]タブで複数選択されている場合、名前は「-」になります。
Soundのところにある○をクリックし、開いたリスト画面からTouchを選択します。
Unity_SoundTouch.png

この段階で実行してみて下さい。壁にボールが当たった際に音が再生されます。

壊れるブロックの音(Damage)

[Assets]タブにあるBlockを選択して、Inspectorを表示します。ちなみにプレハブ化された場合、水色の箱アイコンになります。
[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、[Scripts]>[Hit Play Sound]を選択します。
Unity_SoundBlock.gif
Soundのところにある○をクリックし、開いたリスト画面からDamageを選択します。
Unity_SoundDamage.png

この段階で実行してみて下さい。ブロックにボールが当たった際に音が再生されます。

ラケットに当たる音(Spawn)

Racketの[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、[Scripts]>[Hit Play Sound]を選択します。
次にSoundのところにある○をクリックし、開いたリスト画面からSpawnを選択します。
Unity_SoundSpawn.png

この段階で実行してみて下さい。ラケットにボールが当たった際に音が再生されます。

一番下の壁に当たる音(Death)

BottomWallの[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、[Scripts]>[Hit Play Sound]を選択します。
次にSoundのところにある○をクリックし、開いたリスト画面からDeathを選択します。
Unity_SoundDeath.png

この段階で実行してみて下さい。一番下の壁にボールが当たった際に音が再生されます。

BGMを追加

HierarchyのMain Cameraを選択します。
Main Cameraの[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、[Audio]>[Audio Source]を選択します。
Unity_AudioSourceAdd.gif
次にAudio SourceコンポーネントのAudio Clipのところにある○をクリックし、開いたリスト画面からBGMを選択します。
Loopにチェックを付けます。好みですがVolumeを小さめに0.1にしました。
Unity_AudioBGM2.png

実装を確認する

BGMと各種の効果音が付いてグっとゲームらしくなります。

プレイ動画といってもgifアニメーションなので音が鳴りませんけどね。
Unity_Playing.gif

学んだこと

  • 他スクリプトの修正が不要で音を鳴らすことができること
  • BGMはMain Cameraに付くこと

フリーの音

参照