2021年4月12日 星期一

adaptive music & game audio 筆記 8 - 自適性音樂演示在 Unity 中之模擬

自適性音樂演式在 Unity 中之雛形模擬之方法,可在建立好 FMOD 的專案與 Unity 之連結之後,進行以下步驟,以作為音樂切換之模擬:

FMOD 的部分:

  1. 在新的 FMOD project 中,建立新的 timeline event,並拖曳四個檔案至 timeline 中,此時這些聲音檔案會同時出現於 window 底下的 audio bin 中。
  2. 在 logic track 上,加上 loop region。此外,若 timeline 是以小節數來顯示,則可以在 logic track 中加入 tempo marker ,確保 FMOD 中的小節數,跟音樂軟體的小節數是相同的。(在介面上方可以選擇 display time 或 display beats,選後者則時間軸以小節數來顯示單位)
  3. 刪除 3D preview 元件。(若不刪除此元件,會使得二聲道音樂播放聲音變得比較小聲)。
  4. 在 timeline 上方按右鍵新增 parameter ,命名為 intensity,設定最小、最大值(例如 1~4)。
  5. 將每個軌道予以更名,來對應到 Unity 的四個 plane。
  6. 將 FMOD 軌道的 volume 按右鍵予以自動化,此時切換到 intensity tab,可以設定 volume(之縱軸數值)與 intensity (之橫軸數值)之間的關係,藉此設定什麼樣的 intensity 該產生什麼樣的 volume。


Unity 的部分:
  1. 載入 standard assets
  2. 建立四個 plane,排列如下圖所示。
  3. 至 assets folder 底下,新建一個 material 資料夾,在其中,以滑鼠右鍵新建四次 material,分別命名為 peace, restricted, detected, conflict,並在各自的 inspector 中分別修改顏色,並把這些 material 分別拖曳到不同的 plane 中。
  4. 將 standard assets 中的 character 下的 third person controller 之 prefab 拖曳至已建立的 plane 上。為了播放音樂,必須讓音樂與一個 game object 產生連結,故選擇 third person controller,並在 inspector 中進行 add component,選擇 FMOD event emitter,使音樂能在此game object 上進行聲音發送(emit)。此外,需將 play event 選項指定為 object start,表示執行遊戲時就開始播放音樂。再者,可設定 intensity 來決定剛開始執行遊戲時,需播放對應到哪種 intensity 的音樂。
  5. 為了讓 game 場景的角度適合我們俯瞰,故可選擇 main camera ,並且在 inspector 中修改 transform 的 position 以及 rotation。

  6. 建立 box collider,並與 third person controller 產生連結:(1) 在 hierarchy window 空白處按滑鼠右鍵,製造一個 cube,並刪除 mesh renderer, mesh filter  (2) 將新建的 cube 設定成 scale (10, 10, 10) 以對應四個 plane 的區塊大小,並確定 Is Trigger 要勾選,才能使 player 進入該區域,不受物理的阻礙。(3) 複製前述的 cube (box collider) 並分別拖曳至一個 plane,修改 position 以對其個 plane 的邊界。(4) 在每個 cube 下 add component,選 FMOD studio parameter trigger (此為 FMOD 已經寫好的程式碼,用來觸發 FMOD 中的參數),並將 Third Person Controller 拖曳至 Studio Parameter Trigger 中的 target。並在 target 選單中選擇 Trigger enter。(此處的 target 是用來指「誰」會觸發 FMOD 中的音樂) (5) 將 Third Person Controller 的 tag 設定成 player,亦即帶有 player 標籤的物件進入 box collider 時,就會觸發 FMOD 的參數事件。此外,也要在 cube 下將 Collision Tag 設定成 player。
  7. 在每個 cube 的 inspector 之 studio parameter trigger 的 event 中,會看到 intensity 選項(其是與是來自 FMOD 中的 intensity 參數之設定有關,且必須是已經執行 assigned to bank 以及 build之後,才會出現相同的參數名稱在 Unity 中)。設定與 FMOD 每個軌道之音量自動化曲線所相對硬的 intensity。



沒有留言:

張貼留言