Unityでサウンドをつける方法

## はじめに
今回はボールが跳ねる動作を用いて，3Dオブジェクトに音をつける方法を教えて行きたいと思います．以下のような手順で進めて行きたいと思います．サウンドをつける方法だけを知りたい人は，5番だけをみてもらえればいいと思います．
## 手順
1. プロジェクトを立ち上げる
1. 床とボールを作る
1. ボールに物理法則を適用させる
1. 跳ねさせる
1. はねる音を追加


### 1.プロジェクトを立ち上げる
新しいプロジェクトから3Dを選び，適当な名前をつけます．
　![スクリーンショット 2024-04-21 16.43.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/772e6500-522b-17f7-d5ec-0bb9549e83a1.png)

 ### 2.床とボールを作る
 **床の作成**
 Hierarchyタブの空いている場所を右クリックするとメニューが出てくるので，3D ObjectからPlaneを押す．
![スクリーンショット 2024-04-21 16.46.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/5e9f3023-6b36-872f-2787-b59d523777ac.png)
  
  Inspectorタブでは，オブジェクトについて，様々な設定ができる．名前を変えたり，座標を決めたり，一番したのAddComponentからコンポーネントを追加する．
![スクリーンショット 2024-04-21 17.34.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/b7f39b2d-8351-55d8-69e5-1f4faae45a25.png)


 **ボールの作成**
ボールも同様にして，Hierarchyタブを右クリックし，3D ObjectからSpereを押す．
![スクリーンショット 2024-04-21 16.47.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/c94056eb-d2e8-7593-dae2-0667159e02ef.png)

Inspectorタブの内容を写真のようにする．ボールは上から落としたいため，座標を(0,5,0)にしている．
![スクリーンショット 2024-04-21 17.42.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/aa5ca9ce-8514-7413-4ed8-831a93825739.png)

### 3.ボールに物理法則を適用させる
Hierarchyタブのボールを選択し，．InspectorタブのAddComponentからRigidbodyを選択する．
これで，ボールが自由落下するようになる．
![スクリーンショット 2024-04-21 16.48.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/ec40e682-8803-2a49-94ca-31f8dc037b27.png)

RigidbodyのMassが重さ（kg)を表すので任意の値を入れる.他の値が気になる人は，以下の公式のリンクを見てほしい．

https://docs.unity3d.com/ja/2019.4/ScriptReference/Rigidbody.html

### 4.跳ねさせる
Assetの空いている場所を右クリックするとメニューが出てくるため，Createから，PhysicMaterialを押す.
![スクリーンショット 2024-04-21 16.49.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/fb4d08ca-72df-b4e3-da91-ac9014f987c9.png)

追加したPhysicMaterialを選択し，InspectorタブからBouncingの値を0.8にする．この値は反発係数であるため，高いほどよく跳ね返り，低いほど跳ね返りが小さい．
![スクリーンショット 2024-04-21 16.50.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/6f20c1b2-03da-716e-13e1-b6d5ac350f4f.png)

そして，作ったPhysicMaterialを各オブジェクト(ballとfloor）のColliderのMaterialに追加する（写真の青文字の場所）．PhysicMaterialを各オブジェクトにドラック＆ドロップすることでも追加できる．
![スクリーンショット 2024-04-21 16.52.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/d6f6367b-b464-61b8-2e05-975e29c160f7.png)


### 5.はねる音をつける
**音探し**
今回は効果音ラボの生活[3]サッカーボールの跳ねる1を利用した．

https://soundeffect-lab.info/sound/various/various3.html

利用したい音のファイルをUnityのAssetに追加する．ドラック＆ドロップすれば追加できる．

Assetを右クリックして，CreateからC# Scriptを押す．
![スクリーンショット 2024-04-21 18.16.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/59ea50e4-24a0-631c-e03c-fe4c1f323c79.png)

追加したScriptをVScodeなどのエディターで開く．
今回私は，C# Scriptの名前をSoundOfBound.csとしたため以下のコードを書き込み，保存する．

``` SoundOfBound.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SoundOfBound : MonoBehaviour
{
    public AudioClip collisionSound; // 再生する音源を設定
    
    private void OnCollisionEnter(Collision collision) {
        AudioSource.PlayClipAtPoint(collisionSound, collision.GetContact(0).point);
    }
}

```
そして，このScriptをballのコンポーネントに追加して，変数collisionSoundのところに先ほどの音のファイルを選択する．

![スクリーンショット 2024-04-21 18.38.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3748983/f695e6e8-6540-fc2a-1118-ad7dca18123b.png)


違う名前のScriptにしたい場合はpublic class SoundOfBoundのSoundOfBoundを変えればいい．
もし，床にぶつかった時のみ音が鳴るようにしたかったらSoundOfBound2.csのようなif文を書けばいい．

``` SoundOfBound2.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SoundOfBound2 : MonoBehaviour
{

    public AudioClip collisionSound; // 再生する音源を設定
    private void OnCollisionEnter(Collision collision) {
        if (collision.gameObject.name == "floor")
        {
            // 指定した音源を再生
            AudioSource.PlayClipAtPoint(collisionSound, collision.GetContact(0).point);
        }
    }
}

```

以上，最後までお読みいただきありがとうございました！
GitHubのリンク載せておくので，好きなように使ってください！

https://github.com/bearl27/BoundSound