スクラッチからUnityへ変換「音偏」のイメージ画像

スクラッチの次は?Unityへシフトアップ!スクラッチブロック→Unity変換表「音偏」 - ファイブボックス

スクラッチの次は?Unityへシフトアップ!スクラッチブロック→Unity変換表「音偏」

スクラッチ Unity変換表「音」

音は「AudioSourceコンポーネント」「AudioListenerコンポーネント」など音に関する専用のコンポーネント活用して実現します。

音のプログラムの事前準備

通常、音を鳴らすには、オーディオプレイヤーとスピーカー、さらに音源(mp3,wavファイルなど)が必要です。

一方Unityではオーディオプレイヤーの役割を担うのが「AudioSourceコンポーネント」、スピーカーの役割を担うのが「AudioListenerコンポーネント」、さらに音源が「AudioClip」と呼ばれるものです。

AudioListenerコンポーネント はデフォルトで MainCamera についています。今回スクリプトファイルを付与するオブジェクトに AudioSourceコンポーネント を追加します。

Unity AudioSourceコンポーネントの追加

今回の変換表ではAudioClip型の変数をよく使うので、前提条件として下のように変数の宣言と取得を行ったうえで説明を進めます。

AudioSource source; //AudioSource を使うための変数 
void Start() 
{ 
    source = GetComponent<AudioSource>(); //初期値を取得 
}

スクラッチブロック 〇の音を鳴らす

〇の音を鳴らす

※AudioSourceを事前に準備してください(冒頭の事前準備)

1,音源が1種類の場合

AudioSource コンポーネントの AudioClip に任意の音を指定します。

AudioSourceにAudioClipを指定

Play()メソッドで指定した音を鳴らします

source.Play();    //一度だけAusioClipの音を鳴らす

2,音源が複数ある場合

音源を配列で用意します。

public AudioClip[] clip;
音源に配列を指定、Inspector原音源を指定

配列: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ずつ変える

ピッチの効果を10ずつ変える

※AudioSourceを事前に準備してください(冒頭の事前準備)

ピッチの効果は、AudioSourceコンポーネントの Ptichプロパティが管理しています。Unityでは1.0がデフォルト値なので、変動幅に注意しましょう。

source.pitch += 0.01f;

スクラッチブロック 左右にパンの効果を10ずつ変える

左右にパンの効果を10ずつ変える

※AudioSourceを事前に準備してください(冒頭の事前準備)

パンの効果は、AudioSourceコンポーネントの StereoPanプロパティが管理しており、0が中央値、+1.0で右側からのみ音が流れ、-1.0 で左側からのみ音が流れます。

source.panStereo += 0.1f; //右側にパン 
source.panStereo -= 0.1f; //左側にパン

「音の効果」を〇にする

音の効果を指定の値ずつ変更するのと同様、音の効果を指定の値にするブロックです。

スクラッチブロック ピッチの効果を100にする

ピッチの効果を100にする

※AudioSourceを事前に準備してください(冒頭の事前準備)

ピッチの効果は、AudioSourceコンポーネントの Ptichプロパティが管理しています。

source.pitch = 1.0f; //ピッチの効果を1.0(初期値)にする

スクラッチブロック 左右にパンの効果を10ずつ変える

左右にパンの効果を100にする

※AudioSourceを事前に準備してください(冒頭の事前準備)

パンの効果は、AudioSourceコンポーネントの StereoPanプロパティが管理しています。

source.panStereo = 0.0f; //パンの効果を0(初期値)にする

スクラッチブロック 音の効果をなくす

音の効果をなくす

※AudioSourceを事前に準備してください(冒頭の事前準備)
Unity AudioSauceのプロパティ

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ずつ変える

音量を-10ずつ変える

※AudioSourceを事前に準備してください(冒頭の事前準備)

音量は、AudioSourceコンポーネントの Volume プロパティが管理しています。最大値が1.0 になります。

source.volume -= 0.1f;    //音量を0.1ずつ下げる

スクラッチブロック 音量を100%にする

音量を100%にする

※AudioSourceを事前に準備してください(冒頭の事前準備)

音量は、AudioSourceコンポーネントの Volume プロパティが管理しています。100%は1.0 になります。

source.volume = 1.0f;

スクラッチブロック 音量

音量

※AudioSourceを事前に準備してください(冒頭の事前準備)

音量は、AudioSourceコンポーネントの Volume プロパティが管理しています。

source.volume

使用例

スクラッチブロック もし音量が80より大きければ音量を80にする

もし音量が 80 より大きかったら

 音量を 80% にする

if (source.volume > 0.8f)   //もし音量が0.8より大きければ
{
    source.volume = 0.8f;   //音量を0.8にする
}

ファイブボックスでは、スクラッチはもう卒業、という方向けにUnityの個別指導のオンラインレッスンを行っています。

ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。

それでは次の「イベント編」もご活用ください。

TOP