top of page

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







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


 

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


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

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

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

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


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

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

〇の音を鳴らす





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

 public AudioClip clip;

Unity AudioClip に任意の音源をAssign

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

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


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

source.pitch += 0.01f;
 
スクラッチブロック 左右にパンの効果を10ずつ変える

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


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


 source.panStereo += 0.1f;    //右側にパン
 source.panStereo -= 0.1f;    //左側にパン
 
スクラッチブロック ピッチの効果を100にする

ピッチの効果を100にする


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

source.pitch = 1.0f;       //ピッチの効果を1.0(初期値)にする
 
スクラッチブロック 左右にパンの効果を10ずつ変える

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


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


 source.panStereo = 0.0f;    //パンの効果を0(初期値)にする
 
スクラッチブロック 音の効果をなくす

音の効果をなくす


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

 source.volume -= 0.1f;
 
スクラッチブロック 音量を100%にする

音量を100%にする


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

 source.volume = 1.0f;
 
スクラッチブロック 音量

音量


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

source.volume 

使用例

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

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

 音量を 80% にする




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

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

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



Comments


bottom of page