LoginSignup
11
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-09-15

はじめに

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

ダウンロードしたファイルをダブルクリックしてください。下記ダイアログ画面が表示されます。
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に付くこと

フリーの音

参照

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4