2023年9月6日3 分

スクラッチのその次は?スクラッチブロック→Unityコード 変換表 「音」編

最終更新: 2023年10月6日

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


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

通常、音を鳴らすには、オーディオプレイヤーとスピーカー、さらに音源(mp3,wavファイルなど)が必要です。Unityではオーディオプレイヤーの役割を担うのが「AudioSourceコンポーネント」、スピーカーの役割を担うのが「AudioListenerコンポーネント」、さらに音源が「AudioClip」と呼ばれるものです。

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

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

AudioSource source; //AudioSource を使うための変数
 

 
void Start()
 
{
 
source = GetComponent<AudioSource>(); //初期値を取得
 
}


〇の音を鳴らす

音源を変数で用意します。

public AudioClip clip;

Inspector で事前に用意した音源をAssign

一度だけ音を鳴らす場合は PlayOneShotメソッド を使用します。

source.PlayOneShot(clip); //1度音を鳴らす


終わるまで〇の音を鳴らす

スクラッチではこのブロックがよく使われるのは、繰り返し処理の中で音楽をループさせるケースです。音を鳴らすには Playメソッドを使います。

public AudioClip crip; //音源を宣言
 

 
void Start()
 
{
 
source.loop = true; //繰り返しを有効
 
source.clip = crip; //音源を指定
 
source.Play(); //音を鳴らす
 
}


すべての音を止める

まずは上の「終わるまで○の音を鳴らす」を使って任意の音をPlayしておきます。

音を止めるには Stopメソッドを使用し、任意の場所で音楽を止めます。

source.Stop();


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

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

source.pitch += 0.01f;


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

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

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


ピッチの効果を100にする

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

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


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

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

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


音の効果をなくす

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コンポーネントの Volume プロパティが管理しています。最大値が1.0 になります。

source.volume -= 0.1f;


音量を100%にする

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

source.volume = 1.0f;


音量

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

source.volume

使用例

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

 音量を 80% にする

if (source.volume > 0.8f)
 
{
 
source.volume = 0.8f;
 
}


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

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

    2