スクラッチ Unity変換表「音」
音は「AudioSourceコンポーネント」「AudioListenerコンポーネント」など音に関する専用のコンポーネント活用して実現します。
音のプログラムの事前準備
通常、音を鳴らすには、オーディオプレイヤーとスピーカー、さらに音源(mp3,wavファイルなど)が必要です。
一方Unityではオーディオプレイヤーの役割を担うのが「AudioSourceコンポーネント」、スピーカーの役割を担うのが「AudioListenerコンポーネント」、さらに音源が「AudioClip」と呼ばれるものです。
AudioListenerコンポーネント はデフォルトで MainCamera についています。今回スクリプトファイルを付与するオブジェクトに AudioSourceコンポーネント を追加します。
今回の変換表ではAudioClip型の変数をよく使うので、前提条件として下のように変数の宣言と取得を行ったうえで説明を進めます。
AudioSource source; //AudioSource を使うための変数
void Start()
{
source = GetComponent<AudioSource>(); //初期値を取得
}
〇の音を鳴らす
※AudioSourceを事前に準備してください(冒頭の事前準備)
1,音源が1種類の場合
AudioSource コンポーネントの AudioClip に任意の音を指定します。
Play()メソッドで指定した音を鳴らします
source.Play(); //一度だけAusioClipの音を鳴らす
2,音源が複数ある場合
音源を配列で用意します。
public AudioClip[] clip;
配列:Clip に Inspector から事前に用意した音源をAssign
一度だけ音を鳴らす場合は PlayOneShotメソッド を使用します。
source.PlayOneShot(clip[0]); //0番目の音を1度音を鳴らす
source.PlayOneShot(clip[1]); //1番目の音を1度音を鳴らす
終わるまで〇の音を鳴らす
スクラッチではこのブロックがよく使われるのは、繰り返し処理の中で音楽をループさせるケースです。音を鳴らすには Playメソッドを使います。
※AudioSourceを事前に準備してください(冒頭の事前準備)
public AudioClip crip; //音源を宣言
void Start()
{
source.loop = true; //繰り返しを有効
source.clip = crip; //音源を指定
source.Play(); //音を鳴らす
}
すべての音を止める
※AudioSourceを事前に準備してください(冒頭の事前準備)
まずは上の「終わるまで○の音を鳴らす」を使って任意の音をPlayしておきます。
音を止めるには Stopメソッドを使用し、任意の場所で音楽を止めます。
source.Stop();
「音の効果」を〇ずつ変える
スクラッチブロックには「ピッチの効果」と「パンの効果」の項目があります。Unityには他にも様々な音に関する効果がありますが、ここではピッチとパンのご紹介を行います。
ピッチの効果を10ずつ変える
※AudioSourceを事前に準備してください(冒頭の事前準備)
ピッチの効果は、AudioSourceコンポーネントの Ptichプロパティが管理しています。Unityでは1.0がデフォルト値なので、変動幅に注意しましょう。
source.pitch += 0.01f;
左右にパンの効果を10ずつ変える
※AudioSourceを事前に準備してください(冒頭の事前準備)
パンの効果は、AudioSourceコンポーネントの StereoPanプロパティが管理しており、0が中央値、+1.0で右側からのみ音が流れ、-1.0 で左側からのみ音が流れます。
source.panStereo += 0.1f; //右側にパン
source.panStereo -= 0.1f; //左側にパン
「音の効果」を〇にする
音の効果を指定の値ずつ変更するのと同様、音の効果を指定の値にするブロックです。
ピッチの効果を100にする
※AudioSourceを事前に準備してください(冒頭の事前準備)
ピッチの効果は、AudioSourceコンポーネントの Ptichプロパティが管理しています。
source.pitch = 1.0f; //ピッチの効果を1.0(初期値)にする
左右にパンの効果を100にする
※AudioSourceを事前に準備してください(冒頭の事前準備)
パンの効果は、AudioSourceコンポーネントの StereoPanプロパティが管理しています。
source.panStereo = 0.0f; //パンの効果を0(初期値)にする
音の効果をなくす
※AudioSourceを事前に準備してください(冒頭の事前準備)
Unityではピッチやパン以外にも、左の図の様に各種パラメータを調整することが出来ます。詳細は公式リファレンスをご参照ください
音の効果をなくすには、事前にこれらの初期状態を取得し、任意の場所でその変更したプロパティを初期値に戻します。
- 初期値を入れる配列の宣言
float[] sourceProperty = new float[6]; //プロパティの初期を入れる配列
- 初期値を保存する関数を作成、Start関数などで呼び出し初期値をセット
void SetAudio()
{
sourceProperty[0] = source.priority; //優先度
sourceProperty[1] = source.volume; //ボリューム
sourceProperty[2] = source.pitch; //ピッチ
sourceProperty[3] = source.panStereo; //パン
sourceProperty[4] = source.spatialBlend; //3DEngineが与える影響度
sourceProperty[5] = source.reverbZoneMix; //出力信号の量
}
- 初期値に戻す関数を作成、任意のタイミングで呼び出し
void ResetAudio()
{
source.priority = (int)sourceProperty[0]; //ここだけint型にキャスト
source.volume = sourceProperty[1];
source.pitch = sourceProperty[2];
source.panStereo = sourceProperty[3];
source.spatialBlend = sourceProperty[4];
source.reverbZoneMix = sourceProperty[5];
}
音量を-10ずつ変える
※AudioSourceを事前に準備してください(冒頭の事前準備)
音量は、AudioSourceコンポーネントの Volume プロパティが管理しています。最大値が1.0 になります。
source.volume -= 0.1f; //音量を0.1ずつ下げる
音量を100%にする
※AudioSourceを事前に準備してください(冒頭の事前準備)
音量は、AudioSourceコンポーネントの Volume プロパティが管理しています。100%は1.0 になります。
source.volume = 1.0f;
音量
※AudioSourceを事前に準備してください(冒頭の事前準備)
音量は、AudioSourceコンポーネントの Volume プロパティが管理しています。
source.volume
使用例
もし音量が 80 より大きかったら
音量を 80% にする
if (source.volume > 0.8f) //もし音量が0.8より大きければ
{
source.volume = 0.8f; //音量を0.8にする
}
ファイブボックスでは、スクラッチはもう卒業、という方向けにUnityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。
それでは次の「イベント編」もご活用ください。