Unity-introduction-to-audio
Unity-オーディオの概要
ゲームがオーディオを重視する理由があります。ゲームに美的価値を加えることは非常に重要です。 最初の Pong から、ボールが交互にパドルを打つとビープ音とブープ音が聞こえます。 当時は非常に単純な短い方形波のサンプルでしたが、すべてのビデオゲームの祖父からさらに何を望みますか?
実際の生活では、多くのことがサウンドの知覚方法に影響します。オブジェクトの速度、シナリオの種類、および方向から。
エンジンに不必要な負荷をかける要因はいくつかあります。 代わりに、ゲームでサウンドがどのように機能するかのアイデアを作成し、それを基に構築しようとします。 これは、対処する3つの軸がある3Dゲームで特に顕著になります。
Unityには、オーディオの知覚と再生のための専用コンポーネントがあります。 これらのコンポーネントが連携して、ゲームに自然に感じられる信頼できるサウンドシステムを作成します。
Unityは、リバーブ、ドップラーエフェクト、リアルタイムミキシングとエフェクトなどの便利なツールとエフェクトを提供します。 これらについては、後続の章で学習します。
オーディオコンポーネント
このセクションでは、Unityのオーディオに関連する3つの主要なコンポーネントについて学習します。
AudioSource
AudioSourceコンポーネントは、GameObjectにアタッチしてサウンドを再生する主要なコンポーネントです。 目覚めたときに、ミキサー、コード、またはデフォルトでトリガーされたときに AudioClip を再生します。
AudioClipは、単にAudioSourceにロードされるサウンドファイルです。 .mp3、.wavなどの任意の標準オーディオファイルを使用できます。 AudioClipは、それ自体のコンポーネントでもあります。
AudioListener
AudioListenerは、シーンで再生されているすべてのオーディオを*聴き*、コンポーネントをコンピューターのスピーカーに転送するコンポーネントです。 ゲームの*耳*のように機能します。 聞こえる音声はすべて、このAudioListenerの位置の観点にあります。 適切に機能するためには、シーンにAudioListenerを1つだけ配置する必要があります。 デフォルトでは、メインカメラにはリスナーが接続されています。 リスナーには、設計者が気にする公開プロパティはありません。
オーディオフィルター
AudioSourceの出力またはAudioListenerの取り込みは、Audio Filtersを使用して変更できます。 これらは、リバーブ、コーラス、フィルタリングなどを変更できる特定のコンポーネントです。 特定の各フィルターは、その値を微調整するための公開された値を持つ独自のコンポーネントとして提供されます。
音を鳴らす
クリックすると音が鳴るボタンを作成してみましょう。 開始するには、サークルスプライトを*作成*し、赤にします。
次に、このスプライトに Audio Source を添付しましょう。
オブジェクトがサウンドを再生するためには、オブジェクトを1つ与える必要があります。 この効果音を目的に使用してみましょう。
http://www.orangefreesounds.com/ding-sfx/
効果音をダウンロードし、アセットにドラッグします。
Unityがこのアセットをサウンドファイルとしてインポートすると、自動的に AudioClip に変換されます。 したがって、このサウンドクリップをアセットからスプライトのオーディオソースのオーディオクリップスロットに直接ドラッグできます。
アセットからサウンドクリップをスプライトのオーディオソースのオーディオクリップスロットに直接ドラッグした後、オーディオソースのプロパティで[再生中に再生]の選択を解除することを忘れないでください。そうしないと、ゲームの開始時にサウンドが再生されます。
それでは、コードにジャンプしましょう。 「BellSound」という新しいスクリプトを作成して開きます。
オーディオソースはコードによって制御されるため、最初に参照を取得する必要があります。 前と同じようにGetComponentメソッドを使用します。
public class BellSound : MonoBehaviour {
AudioSource mySource;
//Use this for initialization
void Start () {
mySource = GetComponent<AudioSource>();
}
次に、クリックされているオブジェクトを検出するメソッドを設定しましょう。 MonoBehaviourは、OnMouseDownという名前の必要なメソッドだけを提供します。 このメソッドは、そのgameObjectの collider の範囲でマウスがクリックされるたびに呼び出されます。
コライダーをボタンにまだアタッチしていないので、今すぐアタッチします。
このためにRigidbodyは必要ありません。また、コードでこのコライダーにアクセスする必要もありません。 メソッドが機能するためだけに必要です。
メソッドをテストして、機能するかどうかを確認しましょう。 スクリプトに次のコードを記述し、ボタンに添付します。
void OnMouseDown() {
Debug.Log(“Clicked!”);
}
スクリプトを保存して添付したら、ゲームをプレイします。 ボタンをクリックすると、コンソールにメッセージが表示されます。
これで、サウンドの再生から一歩離れました。 あとは、Audio Sourceインスタンスで Play メソッドを呼び出すだけです。
void OnMouseDown() {
mySource.Play();
}
スクリプトを保存し、ゲームで実行します。 ボタンをクリックすると、サウンドの再生が聞こえるはずです!
注-クリックするたびにピッチが上がるボタンの作成を検討してください。 mySource.pitch とカウンターを使用して、把握できるかどうかを確認してください。