【Unity】効果音やBGMを鳴らす

環境 : Unity 5.6.1f1 Personal (64bit)

Unity で音を鳴らすには、音そのもの(AudioClip)、音を発するコンポーネント(AudioSource)、音を聴き取るコンポーネント(AudioListener) の3つが必要です。
特殊効果や操作は置いておいて、とりあえず音を鳴らす方法を書いていきます。

再生の流れ

  1. AudioSource と AudioListener のコンポーネントを取り付けた GameObject をシーンに配置。
  2. AudioClip を AudioSource にセットする。
  3. AudioSource がその音を Unity のシーン内で鳴らす。
  4. AudioListener がシーン内で鳴った音を聴き取り、機器へ出力する。(実際に音が鳴る)

AudioClip

Unity のエディタ上にドラッグ&ドロップしてプロジェクト内に取り込んだサウンドファイルは、インスペクタやスクリプト上では AudioClip というクラス名で扱います。
このクラスを AudioSource にセットすることで再生や停止させることができます。

.wav .mp3 .ogg などが使用可能。
Unityの対応ファイル形式

AudioSource

シーン内で音を鳴らすコンポーネント。
セットされた AudioClip を再生することで、このコンポーネントが取り付けられたゲームオブジェクトの位置で音を再生します。
3Dゲームでは下記の AudioListener と合わせて、音が鳴る位置と聴く位置が重要になりそうです。
2Dゲームならカメラと同じ位置で良いかもしれません。

AudioListener

シーン内で鳴った音を聴き取り、実際に機器から音を鳴らすコンポーネント。
これをシーン内に配置しておかないと音は聞こえません。人間の耳のようなものでしょうか。

AudioSource とは違ってインスペクタ上で設定する項目はありません。
2D、3Dゲーム問わず、基本的にはカメラに取り付けておけば良いかと思います。
(新規で作成したプロジェクトでは初めからカメラに取り付けられています)

とりあえず鳴らす

AudioSource に AudioClip をセットしておき、
必要なタイミングで AudioSource.Play() を呼び出せば再生できます。

This entry was posted in Unity on

【Unity】Layer, Sorting Layer, Order in Layer ってどう違うの?

環境 : Unity 5.6.1f1 Personal (64bit)

下の二つの項目がそれ

それぞれどういう項目なのか

インスペクター上にある Layer, SortingLayer, Order in Layer
全部にLayerって付いてるし、選択肢があったりなかったりする…
最初はかなり混乱したけども、わかってしまうと簡単
初心者のうちは Layer は使わないかも

Layer

カメラのマスク機能のための設定項目
ゲームオブジェクトの表示・非表示のグループを作ることができる
あるグループのオブジェクトを表示したいけどこっちのグループのオブジェクトは非表示にしたい、またはそれを随時切り替えたい、という様な時に使用する

SortingLayer

SpriteRenderer等のコンポーネントにある、描画順を設定するための項目
描画順のグループを作ることができる
攻撃エフェクトやHP表示等をキャラクターよりも手前に表示したい、またはその順番を随時並べかえたい、という様な場合に使用する

Order in Layer

SortingLayerと同様に、描画順を設定するための項目
こちらは同じSortingLayer内での描画順を設定する
この数字が大きいほど手前に表示され、同じ数字なら後から生成されたオブジェクトが手前に表示される

編集するには?

おそらくエディタ画面右上にあるであろう Layers というプルダウン
これを開いて一番下の Edit Layers… をクリック

インスペクタに Tag & Layers が表示され、ここで Layer, Sorting Layer の追加・削除ができる
Sorting Layer は左のイコールマーク?をドラッグ&ドロップで並べかえられ、下に並べるほど手前に表示される

This entry was posted in Unity on

【Unity】2点間の角度を求める

環境 : Unity 5.6.1f1 Personal (64bit)

角度を求めるには?

ある点からみてもう一つの点までのベクトルの角度を求めるには?
プレイヤーから敵までの角度 的なやつです。
ここでは白い四角から赤い四角までのベクトルの角度(°)を求めます。

基準(白), 目標(赤)

これを実行すると 角度 0 と表示されます

得られる値の範囲は?

上記では目標(赤)の位置がちょうど右側にあるとき、角度は0でした
目標(赤)が他の位置にある場合は以下のようになります

  • 右上( 2, 2 )の場合 45
  • 右下( 2, -2 )の場合 -45
  • 左( -2, 0 )の場合 180
  • 左下( -2, -2 )の場合 -135

得られる範囲は -180° < 角度 ≦ 180° です。
0° 〜 360° ではないようです。