はじめに
JunShimuraさんの「[超初心者向け]Unityチュートリアル「はじめてのUnity」のブロック崩しと同等をC#で ::(1)ステージ配置~(6)ブロックを手作業で並べる)」をよりゲームらしく改造する。
作成する記事は下記の通りです。
- スコアの表示
- ゲームマネージャークラスを作る
- ブロックをスクリプトで配置
- 音を鳴らす(この記事)
- 索引とまとめ
音を鳴らす準備
ゲームの演出として、BGMや効果音があるとより楽しめる。
Unityのサイトに昔からあるチュートリアル「はじめてのUnity 第3回 演出を強化しよう」(旧:Javascript) 」には「音の追加」がある。
今回はこの記事を参考にした。
【2021/02/27追記】
公式のチュートリアルのサイトが消えてしまっていたので、インターネットアーカイブでサイトを見つけました。
https://web.archive.org/web/20171002110307/http://tutorial.unity3d.jp/archive/my-first-unity/03.html
音をインポート
今回使用する音をインポートします。
まず下記サイトからサウンドファイル、sound.unitypackageファイル(4.5Mbyte)を取得します。
http://tutorial.unity3d.jp/archive/my-first-unity/project/sound.unitypackage
【2021/02/27追記】
公式のチュートリアルのサイトが消えましたが、インターネットアーカイブからダウンロードできました。
https://web.archive.org/web/20171002110307/http://tutorial.unity3d.jp/archive/my-first-unity/project/sound.unitypackage
ダウンロードしたファイルをダブルクリックしてください。下記ダイアログ画面が表示されます。
Import
ボタンをクリックするとインポートが始まり、Assetsに Sound フォルダ及び以下のファイルが追加されます。
- BGM
- Damage
- Death
- Spawn
- Touch
これで Unity からサウンドを使用出来る形になりました。
どんな音かは、[Inspector]タブの下に再生ボタンがあるので確認してみましょう。
接触時の音に再生するスクリプトの作成
「物が当たった時に音を再生する機能」を作成します。
HierarchyにてShift
またはCtrl
を押しながら上(TopWall)と左(LeftWall)と右(RightWall)の外壁を選択します。
[Inspector]タブで複数選択されている場合、名前は「-」になります。
[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、Scriptアセットを作成、追加します。ファイル形式はcsを選びます。
ファイル名をHitPlaySound
とします。そうすると、Assetsの中に「HitPlaySound.cs」が出来ます。
※HとPとSは英大文字です。間違えた場合、ファイル名と中身のクラス名の両方を修正してください。
HitPlaySound.csを編集する
Assets内のHitPlaySoundスクリプト(C#のアイコン)をダブルクリックすると、エディタが開きます。
優先的に開かれるエディタは、多くの場合はMonoDevelopというソフトが起動されます。
※MonoDevelopでペーストが効かないに時はMonoDevelopを閉じ直してください。
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
を選択します。
この段階で実行してみて下さい。壁にボールが当たった際に音が再生されます。
壊れるブロックの音(Damage)
[Assets]タブにあるBlockを選択して、Inspector
を表示します。ちなみにプレハブ化された場合、水色の箱アイコンになります。
[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、[Scripts]>[Hit Play Sound]を選択します。
Sound
のところにある○をクリックし、開いたリスト画面からDamage
を選択します。
この段階で実行してみて下さい。ブロックにボールが当たった際に音が再生されます。
ラケットに当たる音(Spawn)
Racket
の[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、[Scripts]>[Hit Play Sound]を選択します。
次にSound
のところにある○をクリックし、開いたリスト画面からSpawn
を選択します。
この段階で実行してみて下さい。ラケットにボールが当たった際に音が再生されます。
一番下の壁に当たる音(Death)
BottomWall
の[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、[Scripts]>[Hit Play Sound]を選択します。
次にSound
のところにある○をクリックし、開いたリスト画面からDeath
を選択します。
この段階で実行してみて下さい。一番下の壁にボールが当たった際に音が再生されます。
BGMを追加
HierarchyのMain Camera
を選択します。
Main Camera
の[Inspector]タブの一番下にある[Add Compornent]ボタンをクリックして、[Audio]>[Audio Source]を選択します。
次にAudio Source
コンポーネントのAudio Clip
のところにある○をクリックし、開いたリスト画面からBGM
を選択します。
Loop
にチェックを付けます。好みですがVolume
を小さめに0.1
にしました。
実装を確認する
BGMと各種の効果音が付いてグっとゲームらしくなります。
プレイ動画といってもgifアニメーションなので音が鳴りませんけどね。
学んだこと
- 他スクリプトの修正が不要で音を鳴らすことができること
- BGMは
Main Camera
に付くこと
フリーの音
- クリックするだけで効果音を自動生成する「bfxr」 要Flash
- アニメ風の効果音が収録された無料サンプルパック『464 free cartoon caper samples』
- フリーで使えるイケてる音ネタ・効果音サイトまとめ