2020年1月1日 星期三

adaptive music & game audio 筆記 3: Unity 中使用 AudioSource 播放 OneShot 聲音

OneShot Sound 是指只觸發一次的聲音或音樂,是相對於不段循環播放的背景音樂而言。下面這個程式碼主要是用在遊戲場景中,主要是利用聲音表現主角踏進一個池塘區域所濺起的水聲。下面這個程式碼(可命名為 PlayerAudio)是利用 add component 加入並依附在遊戲的主角身上來運行。說明如下:

1. public AudioClip splashSound 用來宣告一個叫做 splashSound 的 AudioClip 類別成員。AudioClip 是 Unity 中用來存放聲音檔案的類別  (a container for audio data )。

2. public AudioSource audioS 用來宣告一個叫做 audioS 的 AudioSource 類別成員。AudioSource 是一套處理聲音播放相關機制的類別,猶如一個多功能或提供多種播放模式的播放器。

3. OnTriggerEnter 也是 Unity 中的方法,主要處理某個物件進入到某個物件中的觸發事件之狀況(例如:主角進入到水池中)。利用 CompareTag ("Water" ) 用來判別是否進入了一個標被籤定為 Water 的區域,如果是,則利用 audioS.PlayOneShot (splashSound) 的方法來播放聲音。

程式碼完成後,在主角的 Inspector 中需要利用 Add Component 新增一個 AudioSource 物件,並將此物件拖曳到 Inspector 中的程式碼元件中,顯示 audioS 的地方,由於程式碼中使用 public 的方式來宣告 audioS,所以此程式碼元件就會在 inspector 中顯示一個 audioS 的項目。藉由將 AudioSource 物件拖曳至 audioS 的項目,可讓 AudioSource 物件跟所宣告的 audioS 相連結。

在 Inspector 中的程式碼元件中,另外需拖曳一個聲音檔案至 inspector 的 PlayAudio 元件所顯示之 splashSound 項目,則完成了聲音播放的相關設定,使得主角進入標籤為 water 的區域中,則立即播放所預定的水花聲音。同理,使用 OnTriggerExit(Collider other) 讓主角離開 water 區域時,也再播放一次預定的水花聲音。



其他關於 OnTriggerEnter 與 OnCollision 的區別,可以參考這裡:
https://blog.csdn.net/u014581901/article/details/51582704

若要了解 Tag 標籤的設定方法、以及 OnTriggerEnter、OnCollision 的區別,可以參考下面兩個影片。





沒有留言:

張貼留言