竹馬ボーイ(仮)【PART19】~足音(SE)を鳴らす~

LINEで送る
Pocket

004

今回はキャラクターの足音(SE)とBGMが鳴るようにしてみました。足音の方は地面に着いた時だけ鳴るよう、簡単にですが条件付けをしているので、その辺の話を中心にしたいと思います。

 

目次

何をしたいか?

今回の処理は、竹馬の足元の当たり判定が「地面」に接触した時だけ足音のSEを鳴らす、という処理をしようと思っています。ですので、1つ1つの工程を順番にやっていきます。

 

オブジェクトの「Tag」を設定

まずは「どれが地面なのか?」をオブジェクトに設定する必要があります。

005

設定したいオブジェクトを選択してインスペクタービューを見ると、名前のすぐ下に「Tag」という項目があります。ここでオブジェクトのタグを設定することができます。新しいタグを作りたい時は一番下の「Add Tag…」をクリックしてタグの種類を増やすこともできます。今回は地面用のタグを作り、そのタグを地面として用意した全てのオブジェクトに設定しました。

 

竹馬の当たり判定が「地面」に当たったかどうか判定

オブジェクトの衝突を判定するには、オブジェクトに「Collider(コライダー)」と「rigitbody(リジッドボディ)」が必要になります。(rigitbodyは衝突するどちら一方のオブジェクトにあればOK)

006

このオブジェクトが他のオブジェクトのColliderに衝突した際、「OnCollision」もしくは「OnTrigger」が呼び出されます。

007

コライダーの項目に「Is Trigger」というのがあります。ここにチェックをつけていないと「OnCollision」。チェックをつけている場合は「OnTrigger」って感じです。

「Is Trigger」にチェックをつけている場合、衝突は検出しますが、オブジェクトをそのまますり抜けていきます。物理的にぶつかってほしくないけど、判定はとりたい、という時には「Is Trigger」にチェックをつけましょう。

で、呼び出される種類は以下の通りです。

・OnCollisionEnter…他のコライダーに衝突した時

・OnCollisionExit…他のコライダーから離れた時

・OnCollisionStay…他のコライダーから触れている間

OnTriggerにも同様に「OnTriggerEnter」「OnTriggerExit」「OnTriggerStay」があります。

私は今回の処理ではOnTriggerを使って、足元のコライダーが衝突した時、衝突したオブジェクトのタグが「地面」だったら処理を行う、足が地面を離れるまで処理は行わせない、というスクリプトを作りました。

008

このスクリプトを足元のオブジェクトに入れてあげて、地面を踏んだらサウンドを鳴らすようの別の関数を呼ぶようにしました。

 

音を鳴らす

音を鳴らすための条件は出来たので、音を設定して出してみます。

まず音を鳴らすためだけの新しいスクリプトを用意しました。(これは今後サウンド関係を一括で管理しやすくするためです)

009

「AudioClip(オーディオクリップ)」は今後音を変更しやすいようにPublicで。ついでに音量も。先ほどのスクリプトで呼ぶ関数を作り、その関数が呼ばれたら音を再生させる処理を追加しました。

Unity上ではこんな感じ。

010

空っぽのオブジェクトを作り、このスクリプトと「Audio Source」のコンポーネントも入れます。Audio Sourceは音の発生源だとでも思っておけば大丈夫です。これがないと音が出ません。複数の音を同時に鳴らしたい場合は、その分だけAudio Sourceが必要ということになります。スクリプト側でAudioClipを設定できるようにしているので、特に設定をいじってはいません。(「Play On Awake」のチェックだけ外しています。これのチェックがついているとシーン開始時に勝手に音が鳴るので)

ちなみにAudio Sourceが音の出す側なら、音を聞く側のコンポーネントもあります。それが「Audio Listener」です。これもないと音が聞こえてきません。これはデフォルトでMain Cameraについていますし、他のオブジェクトに設定することもできます。

補足ですが、「Spatial Blend」はデフォルトでは2D(0)に設定されています。これはどこにいても音が同じように聞こえる状態ですが、3Dに設定すれば3D空間で音が聞こえるような設定にすることもできます。

 

まとめ

まずは動画で。

 

オブジェクトの「Tag」を設定することで色々な条件付けができる。

コライダー同士の衝突があると「OnCollision」もしくは「OnTrigger」が呼び出される。そこで色々な処理を設定できる。

「Audio Source」で音の発生源を作り、「AudioClip」でどんな音を鳴らすか設定する。それを「Audio Listener」で聞く。

今回は初歩的なことしかしていませんが、衝突した際の力の加わる量などで音量や音を変更したり、金属の地面を踏んだら「キンッ」という音、砂の地面を踏んだら「ザッザッ」というようにタグを増やして見た目に適した音を鳴らしたりと、より臨場感のある音作りを今後していく予定です。(スケジュール的に余裕があれば)

ひとまず音に関してはこんなところにしておいて、エフェクトも出す工程をやっていこうと思います。

 

スポンサーリンク

スポンサーリンク

LINEで送る
Pocket