Edited at

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

More than 1 year has passed since last update.


はじめに

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に付くこと


フリーの音


参照