iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
自我挑戰組

<< Unreal 進廠維修,就從賽車遊戲開始 >>系列 第 21

Day21. 【Unreal Engine 5】UE5 計時器 & 引擎音效

  • 分享至 

  • xImage
  •  

閱讀提醒:本文可以單獨服用,會在官方的高級賽車模板中撰寫計時器及引擎音效。
另外計時器在此篇上半部重寫,上一篇可忽略。

前置作業:可先找三個分別為三種檔位/三種速度的引擎音效,可循環播放的。

Unreal Engine:5.03 高級賽車模板

OS:Windows10

本文大綱

1. 計時器 
2. 音效 - Engine Sound

昨天的計時器,因為太忙沒整理過,所以本篇的前半段會重寫計時器的部份,且會分別撰寫正數及倒數。

計時器

在玩賽車遊戲時,大家通常最在意的就是每個地圖或賽道的計時,或者是劇情挑戰的限時賽,所以今天就來實作一下計時器吧!

計時器 UI:Widget UI - designer

  • 首先開啟模板中的 Vehicle UI 藍圖。

  • 在 designer 介面新增三個 Textblock,分別為 「分鐘:秒數」,將其物件名稱改為 MinsSecs,並在 Detail 面板將 Text 分別設為 00:00

  • 並且新增一個 Horizontal Box,並將三個 Textblock 拉到該階層下方。

  • 將其放到畫面上方,並透過 Detail 面板調整相關屬性,例如:位置、大小。

  • 最後,分別選到 MinsSecs,在 Detail 面板中的 Text 右側選擇 Bind V,選擇 Create Binding

計時器 UI:Widget UI - Event Graph

  • 再回到 Vehicle UI 藍圖,切到 Event Graph

  • 新增 Event Construct 事件,透過 Get All Actor of Class 調用 Vehicle Player Controller

  • 新增 Get(a copy),再 Ouput 節點上點擊右鍵,選擇 Promote to Variable,會將其複製到該新的變數,並將變數名稱改為 Vehicle Refff

計時器 UI:Widget UI - Get Mins Text0Get Secs Text0

  • 接著我們從 function 面板打開剛剛 Create Binding 出來的兩個 function,分別為 Get Mins Text0Get Secs Text0

  • 首先開啟 Get Mins Text0,在 Return Node 的 Return value 節點上新增 To Text(Integer),顯示整數的意思,並將 Minimun Integral DigitsMaximum Integral Digits 皆設為 2,亦為會顯示的最少及最多的整數位數,因為我們的分鐘及秒數,希望皆會顯示兩位數,故設為 2

  • 接著將 Vehicle Refff 拖曳到面板上,選擇 Get,並且與 Get Mins 連接,最後 Value 參數,傳遞給 To Text(Integer)

  • 再來開啟 Get Secs Text0,其步驟與 Get Mins Text0 一樣,只需將 Get Mins 改為 Get Secs 傳遞給 To Text(Integer)

計時器正數函數 - Vehicle Player Controller

  • 開啟 Vehicle Player Controller,新增兩個 Variables,分別為 MinsSecs,並將 Mins、Secs 的 Default Value 改為 0

  • 找到 Event Tick 事件,並在 Update Gear 後方新增 Delay,並將 Duration 設為 1

  • 接著先計算秒數,再接上 Branch,設置須進位時的條件,當 Secs > 59 成立,則 Mins + 1Secs = 0

計時器倒數函數 - Vehicle Player Controller

  • 一樣是找到 Event Tick 事件,並在 Update Gear 後方新增 Delay,並將 Duration 設為 1

  • 接著先判斷秒數是否為 0,若為 False,則 Secs-1

  • 反之,則新增一個 Branch,判斷 Mins 是否為 0,若為 False,則 Mins-1Secs=59;若為 True,可連接結束遊戲 UI。

  • 最後,將 Mins、Secs 的 Default Value 可改為該圈賽道限時的時間,例如:Mins = 2Secs = 10,也就是限時兩分十秒。

PS:若單獨實作計時器,要記得 Create WidgetAdd Viewport,才會顯示在畫面上喔!若為同一個 UI藍圖,新增一次即可,可參考之前的說明,https://ithelp.ithome.com.tw/articles/10302929。


引擎音效

接下來我們來看該怎麼設置引擎音效吧!

先找三種不同檔位或是車速的引擎音效,並將其匯入專案中。

  • 首先在 Content Drawer 空白處點擊右鍵,選擇Sounds,新增 Sound AttenuationSound Cue 藍圖,並將其分別命名為 CarRunningEngineSound

Sound Attenuation

  • 將 Inner Radius 調整為 2000

Sound Cue

  • 進到畫面中,可以看到一個 Output。
  • 首先新增一個 Crossfade by Param ,透過參數淡入淡出。
  • 接上三個 Continuous Modulator,可以在此分別為三個音效調整各項參數。
  • 最後新增三個 Looping Wave Player:Sound,並將 Sound Wave 設置成三個對應的音檔。

Vehicle Pawn 車輛藍圖

  • 首先開啟模板中 SportsCar_Pawn 的車輛藍圖。
  • 在 Mesh 中新增一個 Audio Component,並將音效設置成剛剛新增的 EngineSound

小結:上方就是正數、倒數計時器的藍圖撰寫以及引擎音效的基本設定啦!明天繼續~
/images/emoticon/emoticon10.gif


上一篇
Day20. 【Unreal Engine 5】UE5 計時器
下一篇
Day22. 【Unreal Engine 5】UE5 引擎音效 (2) & 碰撞音效(1)
系列文
<< Unreal 進廠維修,就從賽車遊戲開始 >>30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言