最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

對白 | 基于Wwise與Unreal Engine的語音設(shè)計

2021-12-22 11:54 作者:Wwise官方  | 我要投稿

語音對白是當今電子游戲的基礎(chǔ)內(nèi)容之一,它不僅可以讓玩家將角色與特定聲線相關(guān)聯(lián),通過語音還可以實現(xiàn)玩家與角色的共情。復雜的對話系統(tǒng),更可以實現(xiàn)通過玩家行為來動態(tài)影響角色的對話內(nèi)容或方式,從而進一步增強沉浸感。

比如玩家樂善好施,NPC們則以禮相待;反之玩家喪盡天良,NPC們揭竿而起。這就是傳說中的動態(tài)對話。

在本演示中,我們將重點圍繞敘述性語音對白,以及在Wwise與Unreal Engine中的整合而展開。Wwise有一套專門的動態(tài)對話整合功能,但在此,我們將嘗試用其他方式對語音進行驅(qū)動。本貼主要涉及以下三方面內(nèi)容:

1、通過Sequence Containers,實現(xiàn)不受玩家行為影響的基本對話;

2、適用于多語言版本游戲的Wwise語音本地化系統(tǒng);

3、通過Switch Containers,實現(xiàn)受玩家行為影響的動態(tài)對話。

通過本演示,您將了解Wwise Sequence和Switch Containers相關(guān)功能,Unreal Engine的Wwise相關(guān)藍圖,如:Event Posting、Delays、Switch、State切換等。

另外,本人也撰寫了Unity版本博客,更參閱這里。

Wwise - Sequence Containers & 本地化語音對白

演示一,我們來設(shè)計一個指揮官角色旁白,為玩家提供引導。一共有5句相關(guān)語音,需要按順序依次播放。

1、“喂?能聽到我說話嗎?”

2、“聽著,有些要事兒需要你執(zhí)行?!?br>
3、“請務(wù)必克服困難?!?br>
4、“翻過柵欄,到拱門下,然后進入綠色通道。注意別搞錯了,別去紅色通道?!?br>
5、“如果你能搞定,那就幫了我們大忙了。通話完畢?!?/p>

不管怎樣,這段對話在游戲開始階段觸發(fā)時都不會有任何變化,所以可以借助Sequence Containers來實現(xiàn)。同時,利用Wwise的語音本地化系統(tǒng)可以讓玩家按照各自偏好,設(shè)置不同語言。

首先,我們進入Wwise的Audio選項卡。在Actor-Mixer Hierarchy下,新建一個名為MissionBriefing的Sequence Container (Ctrl + Shift + Alt + Q)。接著,將語音文件添加到Container內(nèi)。您可通過右鍵點擊Container并選擇"Import Audio Files…" (Shift + i)或直接將語音資源拖入Container中完成操作。

在Audio File Importer中,將"Import as"選項從"Sound SFX"改為"Sound Voice"。然后點擊"Import"。

Sound Voices與Sound SFX類似,區(qū)別在于前者允許單個對象導入多種語言的語音文件。當更改語言設(shè)置時,所有Sound Voices將隨之切換到對應(yīng)語言的語音資源。

我們已經(jīng)導入了所有的英語語音文件,接下來要為工程添加其他語言。執(zhí)行此操作,請移至頂部欄的Project,選擇Languages (Shift + J)。在Language Manager中,您可以添加、刪除和重命名語言,甚至可以全局更改各語言的Gain設(shè)置。點擊Add按鈕,在彈框中輸入西班牙語。點擊“Okay”,并在隨后的警告提示中確認所做的更改。

點擊任意Sound Voices對象,在Contents Editor中可以看到,現(xiàn)在已有英語和西班牙語兩個部分。前面已經(jīng)導入了英語語音文件,接下來通過將對應(yīng)語音資源拖到Contents Editor的西班牙語字段來導入西班牙語語音。對以上5個文件執(zhí)行相同操作。

播放任意Sound Voices對象,將觸發(fā)默認語言設(shè)置下的語音文件。若將默認語言切換為西班牙語(Wwise界面左上角處),再次播放對象,則將觸發(fā)西班牙語字段中導入的語音資源。這是語言切換的一種快捷方式。

接下來讓我們看一下Sequence Container。選擇對象后,查看Contents Editor及其右側(cè)的Playlist部分。默認情況下,Sequence Containers并不會直接播放其內(nèi)的聲音對象,而只會按照規(guī)則觸發(fā)位于Playlist中的對象。按您希望的播放順序?qū)ound Voices從Contents Editor拖到Playlist中。

除非想進一步編輯聲音,在Audio模塊的設(shè)置告一段落。進入Events選項卡,在Default Work Unit中新建兩個事件:

1、一個“Play”行為事件,用來觸發(fā)我們的Sequence Container,命名為Play_MissionBriefing。

2、一個“Reset Playlist”行為事件,該行為將把Sequence Container的播放列表重置回起始的Sound Object,命名為Reset_MissionBriefing。

注意:本演示中實踐的動態(tài)對話系統(tǒng),并沒有使用Events選項卡的Dynamic Dialogue模塊。

第二個事件的目的是確保每當這段對話觸發(fā)時,總是從Sequence Container的起始語音開始播放。它主要作為保險存在。

接下來新建一個Soundbank,將以上兩個事件導入其中。在頂部欄“Layouts”下選擇Soundbank布局,或按快捷鍵F7。在Soundbank Manager中,選擇New新建Soundbank并命名為Main。

在Soundbank Manager中選擇新建的Soundbank,并將事件Play_MissionBriefing和Reset_MissionBriefing從Event Viewer拖到Soundbank Editor中。

在Soundbank Manager中,選中新建的Soundbank,平臺(Windows,Mac等)以及語言復選框。最后,點擊“Generate Selected”按鈕。

Wwise - 動態(tài)對話

在玩家被指揮官賦予任務(wù)后,他們要在一定時間內(nèi)完成任務(wù)。而根據(jù)任務(wù)的完成情況,指揮官會給予不同的回應(yīng)。開始之前,讓我們先來鎖定變量,這些變量將決定指揮官對玩家說什么。首先,看一下玩家的3個任務(wù)目標:

1、越過障礙;

2、穿過拱門;

3、進入綠色通道,不要進入紅色通道。

綜上所述,這項任務(wù)的完成情況共有5種組合方式。

1、玩家沒有完成任何任務(wù)目標;(Fail、Fail、Fail)

2、玩家只越過障礙;(Pass、Fail、Fail)

3、玩家越過障礙,抵達拱門;(Pass、Pass、Fail)

4、玩家越過障礙,穿過拱門,進入Red通道;(Pass、Pass、Red)

5、玩家越過障礙,穿過拱門,進入Green通道。(Pass、Pass、Green)

據(jù)此得出我們要定位的三個變量:障礙、拱門和通道。同時這也是Switches和States功能的落腳點。

若工程仍位于Soundbank布局,請選擇“Layouts -> Designer”或按F5返回Designer布局。

進入Project Explorer的Game Syncs選項卡,在Switch模塊的Default Work Unit中新建3個Switch Groups: Hurdle、Archway、和Path。對于Hurdle和Archway,分別新增兩個Switches: Fail和Pass。對于Path Switch Group,新增3個Switches: Fail、Red、和Green。

返回Audio選項卡。在Actor-Mixer Hierarchy的Default Work Unit (Ctrl + Shift + Alt + W)下新建一個Switch Container,命名為MissionResult。

選擇新建的Switch Container并查看Property Editor右側(cè)的“Switch”設(shè)置。我們要用這個Container檢查玩家是否通過了Hurdle測試。若失敗,玩家將聽到指揮官表示失望的語音;若通過,玩家將進入接下來的Archway測試。

為此,首先將Switch Group設(shè)置為Hurdle,并將Default Switch/State設(shè)置為Fail。接下來需要用合適的“對象”來分別指派給Assigned Objects下的Pass和Fail Switches。

將“Hurdle Failed”條件需要觸發(fā)的音頻文件導入MissionResult Switch Container中。然后在MissionResult Container中新建另一個嵌套Switch Container,命名為Archway。

接下來將這兩個對象從Contents Editor分別移到對應(yīng)的Assigned Objects中:“Hurdle Failed”到“Fail”,“Archway” Container到“Pass”。

同上我們將在Archway Switch Container中重復此過程。將Switch Group設(shè)置為Archway,并將Default Switch/State設(shè)置為Fail。將“Archway Failed”音頻導入Archway Container,并創(chuàng)建另一個名為Path的嵌套Switch Container。將這兩個對象分別指派到對應(yīng)的Assigned Objects中:“Archway Failed”到“Fail”,“Path” Container到“Pass”。

再次重復以上整合過程,區(qū)別是最后這組共有3個Switches。在Path Switch Container內(nèi),將Switch Group設(shè)置為Path,Default Switch/State設(shè)置為Fail。

導入最終的3個音頻文件:Path Failed,Path Red,Path Green。并將3個文件分別指派給對應(yīng)Assigned Objects。

讓我們簡單回顧一下以上邏輯。若您未通過Hurdle測試,則不會觸發(fā)其他Switch Containers;將直接播放失敗消息。若通過,則會進入下一輪Archway測試。若在這一輪失敗,將不會觸發(fā)Path Switch Container,而是直接播放Archway失敗消息。若通過了Archway測試,則將觸發(fā)最終的Path Switch Container,該Container將檢查玩家是否有進入紅色或綠色通道,抑或是完全沒有進入任何通道。最終所有三種結(jié)果都將觸發(fā)特定的音頻文件。

完成以上設(shè)計后,準備對應(yīng)的事件就很簡單了。可以直接在Audio選項卡中新建事件。只需右鍵單擊MissionResult Switch Container,進入New Event,選擇Play。這將自動生成一個名為Play_MissionResult的Play行為事件。

按F7返回Soundbank布局,并將新的Play_MissionResult事件從Event Viewer拖到Soundbank Editor中。同上生成Soundbank,并確保您的Wwise工程已保存。

Unreal Engine - 序列語音對白整合

接下來將對之前組織在Sequence Container中的語音對白進行整合。通常來說,這個工作并不復雜;將語音按順序依次觸發(fā)5次即可。但如何才能知道當前處在播放狀態(tài)的音頻將在何時結(jié)束,以便進行下一個文件的觸發(fā)?又如何在每個音頻之間加入適當?shù)难舆t呢?我們可以通過事件回調(diào)和協(xié)同路由來實現(xiàn)以上兩個訴求。

首先,加載Bank。右鍵點擊Unreal Engine的Content Browser,選擇“Audiokinetic -> Audiokinetic Bank”。新建Bank的命名需與Wwise工程保持一致(Main)。

接下來,確保Wwise Picker窗口可見。若沒有,請移至頂部欄并選擇“Window -> Wwise Picker”。在該窗口,您可以檢索所有Wwise組件。若窗口內(nèi)容未與Wwise工程同步,請確保在Wwise中重新生成Soundbank,保存Wwise工程,并點擊Unreal Engine Wwise Picker窗口中的“Populate”按鈕。

進入Event文件夾并將3個相關(guān)事件拖到Content Browser中。為了使文件結(jié)構(gòu)清晰有序,將事件放置在Content Browser中統(tǒng)一的文件夾內(nèi)維護管理會很有幫助。右鍵點擊所有事件,選擇“Group into Soundbank”。搜索選擇剛才新建的Bank,并點擊Select。

最后,右鍵點擊Bank,選擇Generate Selected Soundbank,并點擊Generate。

現(xiàn)在可以開始腳本編寫了。在視口上方的Blueprints選項卡下,選擇“Open Level Blueprint”。在Event視圖中,您會注意到多個帶有紅色標題的框。我們將只使用“Event BeginPlay”,其余部分可以忽略。

在Event BeginPlay右側(cè)的白色箭頭“Exec Pin”處點擊并牽引出一個新節(jié)點。選擇“Audiokinetic -> Actor -> Post Event”,也可以在搜索欄中直接搜索“Post Event”。

生成新節(jié)點后,我們需要將兩個值與之關(guān)聯(lián):需要觸發(fā)的Ak Event以及Event注冊所在的Actor。事件簡單 – 只需進入“Select Asset”下拉列表并選擇之前新建的“Reset_MissionBriefing”事件即可。

下面添加Actor,考慮到在本演示的所有可能情況中,Actor都將是玩家本身。那么接下來就需要獲取玩家信息,點擊藍色“Actor” 引腳并牽引出一個新節(jié)點,搜索選擇“Get Player Character”。

重復類似步驟。點擊Post Event節(jié)點的Exec引腳并牽引出一個新節(jié)點,搜索選擇“Post and Wait for End of Event”。這個便攜功能將等待配置事件執(zhí)行完成后再繼續(xù)執(zhí)行腳本的其余部分。

AkEvent選擇“Play_MissionBriefing”事件,并可將前面的“Get Player Character”節(jié)點與此功能的Actor相連接。

到目前為止,我們實現(xiàn)了對Sequence Container播放列表的重置,并觸發(fā)了該Container的第一句語音對白。接下來還需要觸發(fā)事件4次(且只觸發(fā)4次)。其次,需要在每句語音之間增加一個合適的延遲 —— 讓我們從這個功能繼續(xù)展開。

在“Post and Wait For End of Event”的Exec引腳處,搜索選擇Delay功能。這個簡易功能會將腳本的其余部分延遲一定Duration,將其值設(shè)為1,當然也可按需取任意值。

下面我們需要新建一個整數(shù)變量。用此變量作為計數(shù)器來記錄事件的觸發(fā)次數(shù)。一旦事件觸發(fā)滿五次,則需要停止后續(xù)的觸發(fā)。

要新建變量,請移至My Blueprint窗口的Variables選項卡,點擊 + 號。將新變量命名為NarrationCount。在每次新建變量后,及時“Compile” Blueprint是個好習慣。通過編譯新變量可以進一步編輯更多變量的值。

在右側(cè)的Details窗口中,更改Variable Type。在Variable Type的下拉列表中選擇Integer。變量編輯完成。

從Variables選項卡中,將新變量拖到Event Graph中,并將其放置在Delay節(jié)點下方。接下來可以選擇Get或Set變量的值。

1、GET變量的當前值(在本例中,值為0)。

2、SET變量為NEW值(可將值設(shè)為1526434568)。

這里我們選擇Get Narration Count。接下來需要將變量的值增加一,表示事件已觸發(fā)了一次。要執(zhí)行此操作,請從Narration Count的引腳處牽引出一個新節(jié)點,搜索選擇“Increment Integer”。您將得到一個顯示為 ++ 的節(jié)點。其功能含義為“Current Value + 1”。

整合工作接近尾聲。下面需要檢查驗證事件的總觸發(fā)次數(shù)。從 ++ 引腳處牽引出一個新節(jié)點,搜索選擇“Integer < Integer”。在 < 功能的空引腳處,輸入值5。

在 < 功能的紅色引腳處牽引出一個新節(jié)點,搜索選擇“Branch”宏。分支主要是用來檢查語句的真假。在我們的例子中,則是用來判斷Narration Count是否小于5。若小于5,則返回并再次觸發(fā)事件。若不小于5,則語音對白結(jié)束。

要實現(xiàn)此操作,請將Branch的True Exec引腳直接牽引至“Post and Wait for End of Event”功能最左側(cè)的Exec引腳處。

注意:這樣做將創(chuàng)建一條貫穿其他節(jié)點的白線,視覺上也許會不太美觀。請嘗試雙擊白線新建Reroute Node,可利用它來合理繞過其他節(jié)點保持調(diào)理。

整合完成!以下為藍圖截圖:

在返回主編輯器之前,請編譯藍圖并保存。按Play檢查測試,以確保功能正常。若您覺得語音對白之間的延遲不太合適,也可以對Delay功能的Duration值做進一步優(yōu)化調(diào)整。

Unreal Engine - 任務(wù)結(jié)果整合

玩家已獲取了任務(wù)信息并繼續(xù)執(zhí)行任務(wù)。而客戶端需要搞清楚玩家是否真的越過了障礙,抵達了拱門,進入了綠色或紅色通道。為了實現(xiàn)以上判定,我們需要為障礙、拱門以及兩條通道分別整合觸發(fā)體。

在“Place Actors”窗口Basic選項卡底部,選擇Box Trigger對象拖動到視口中,并將其放置在玩家的必經(jīng)之路上。利用Translate (w),Rotate (e),Scale (r)工具,可以自定義長方體。

對于Hurdle觸發(fā)體,請在Details窗口選擇藍色的“Blueprint/Add Script”按鈕。在彈框中,可任意命名Blueprint,在這里我將其命名為BP_SetSwitch。點擊Select,生成新的Blueprint。

完成后,請移至Event Graph選項卡。在這里設(shè)置Hurdle的Wwise Switch為Pass,以表示玩家確實通過了障礙。Event ActorBeginOverlap是本例中用到的唯一Event,它會在目標對象進入Box Trigger時激活。在此處,用來檢測碰到觸發(fā)體的對象是否為玩家。

在Exec引腳處,搜索選擇“Cast to PlayerController”。我們還需要將Other Actor引腳與“Cast to PlayerController”的Object引腳相連。

然后在Cast的Exec引腳處,搜索選擇“Set Switch”功能。將“As Player Controller”引腳與“Actor”引腳相連。

接下來,將不再從下拉菜單中選擇Switch Value,而是要把Switch定義為一個單獨的變量。這是因為這個藍圖同樣也會用來設(shè)置Archway的Switch,所以需要Switch能夠設(shè)為不同的值。

要執(zhí)行此操作,請在Switch Value引腳處牽引出一個新節(jié)點并選擇“Promote to Variable”。此舉將自動命名變量,并將變量類型設(shè)置為Ak Switch Variable。與我們的需求契合。現(xiàn)在,只需按下變量右側(cè)的圖標即可將其啟用(也可在Details窗口中選中“Instance Editable”復選框,以達成相同的效果)。

Instance Editable (眼球) 可將變量設(shè)置為Public。此設(shè)置可實現(xiàn):

1、該變量可被其他藍圖接收和編輯。

2、如果當前場景中存在該藍圖的多個實例,則可以(在編輯器中)為該變量的每個實例設(shè)置不同的值。

確保在返回主編輯器之前編譯并保存藍圖?,F(xiàn)在可從Viewport或World Outliner中選擇BP_SetSwitch,同時您可能會注意到Switch Value變量已在Details窗口中可用。在這里,將其設(shè)為Hurdle-Pass。

接下來對Archway進行類似操作。將BP_SetSwitch從Content Browser拖到Viewport中,參考之前Hurdle的設(shè)置對Archway進行編輯。唯一的區(qū)別在于Switch Value需要設(shè)置為Archway-Pass。

下面處理紅色和綠色通道觸發(fā)體,這兩個觸發(fā)體需要分別實現(xiàn)不同的功能。區(qū)別于之前設(shè)置Switch的情況,在這里我們需要的是當檢測到玩家進入任意通道時,立即結(jié)束任務(wù)。所以我們需要定制新的藍圖。

拖動調(diào)整觸發(fā)體,使其可以覆蓋任意通道的整個上方區(qū)域(這里用紅色通道演示),觸發(fā)體需要略高于通道。然后參考BP_SetSwitch的流程新建藍圖,并將其命名為BP_Path。

在Event Graph中,我們需要新建兩個變量:

- NarrationEnd和MissionComplete

- 兩個變量都為Booleans。

- 兩個變量都為公共變量,因此請激活眼球圖標或勾選Details面板中的“Instance Editable”復選框。

這些變量的功能正如其名。判斷語音對白是否結(jié)束?判斷任務(wù)是否完成?首先它可以確保任務(wù)不會在語音結(jié)束前完成。其次能夠保證任務(wù)結(jié)局只會有一種可能。

編譯并保存藍圖。接下來從主編輯器的Blueprints選項卡選擇“Open Level Blueprint”進入我們的關(guān)卡藍圖。

首先需要告知Unreal Engine語音對白已經(jīng)結(jié)束。然而,Narration End變量在另一個藍圖中,因此需要一個訪問該變量的方法。

要執(zhí)行此操作,請在Branch的False Exec引腳處牽引出一個新節(jié)點,搜索選擇“Get All Actors Of Class”。在Actor Class字段中,找到剛才新建的藍圖:BP_Path。接下來,在Out Actors引腳處牽引出一個新節(jié)點,搜索選擇“Get (a copy of)”。重復此操作,再建另一個“Get (a copy of)”。將第一個GET功能的值設(shè)為0,第二個GET功能的值設(shè)為1。

這兩個“GETS”將分別獲取游戲中的2個BP_Path對象;紅色通道和綠色通道。

我們會在該藍圖中多次獲取這些通道對象,因此將其封裝成單獨的功能將非常有用。選擇“Get All Actors of Class”和兩個“GETS”,右鍵單擊選擇Collapse to Function。在My Blueprint窗口Functions選項卡列表中,將新功能重命名為Get Paths。雙擊Get Paths功能進入其Event Graph。

功能使用前還需要一些額外的編輯。首先需要Return Node,否則將無法訪問兩個GET功能的結(jié)果。在Event Graph中任意位置單擊鼠標右鍵,搜索選擇Add Return Node。將Get All Actors of Class和Return節(jié)點的Exec引腳相連。最后,將2個Get功能的藍色節(jié)點分別牽引至Return Node。這將在Return節(jié)點中新建2個變量槽。通過選擇Return Node,在Outputs選項卡中重命名變量,可以編輯引腳的名稱。

最后選擇“Get Paths”節(jié)點。在Details窗口中,勾選“Pure”復選框。

Pure Functions承諾不以任何方式修改狀態(tài)或類的成員。鑒于我們只需要獲取這些Actor變量而不會改變它們,所以這里需要勾選“Pure”復選框。

關(guān)閉“Get Paths”藍圖并返回Level Blueprint的Event Graph?,F(xiàn)在應(yīng)該可以從Get Path功能中看到2個藍色Path引腳。在這兩個引腳處分別牽引并創(chuàng)建“Set Narration End”節(jié)點。連接所有Exec引腳后,最終結(jié)果應(yīng)如下所示:

在這里的編輯告一段落。編譯保存此藍圖并返回BP_Path藍圖。與BP_SetSwitch一樣,我們使用Event ActorBeginOverlap。在事件的Exec引腳處牽引并創(chuàng)建“Cast to PlayerController”功能,然后將藍色“Other Actor”引腳牽引至Cast的對象引腳。

接下來檢查語音對白是否已經(jīng)結(jié)束。將NarrationEnd變量從Variables選項卡拖到Event Graph中,選擇“Get NarrationEnd”。然后在“Cast to PlayerController”功能的Exec引腳處牽引并創(chuàng)建Branch功能。將NarrationEnd變量與Branch的條件相連。

參考NarrationEnd變量并重復類似操作,來檢查任務(wù)是否已經(jīng)完成:

分支已設(shè)置好,接下來需要將MissionComplete變量設(shè)為true,并將Switch值設(shè)為玩家進入的任意通道,然后Post “Play_MissionResult” Event給玩家。

如果忘了如何將Set Switch的Switch Value設(shè)置為公共變量,請查看您在BP_SetSwitch處的相關(guān)操作。

確保在返回主編輯器之前編譯并保存藍圖。移至Path并將Switch設(shè)為“Path-Red”。復制此通道(Ctrl + W)并將其粘貼適配到Green Path。最后,將其Switch Value設(shè)為“Path-Green”。

齊活!測試一下,聽取任務(wù)引導并執(zhí)行任務(wù)。分別測一下綠色和紅色通道,確保兩種情況的Mission Result語音都觸發(fā)無誤。

至此,流程驗證可行。然而,還存在一個問題。我們現(xiàn)在只有當玩家進入紅色和綠色通道時才會有結(jié)局反饋。而Wwise中設(shè)置的其他3種結(jié)局該怎么處理呢?

為此,可在引導語音結(jié)束后新增一個5秒計時器。若該計時器在任務(wù)結(jié)束前啟動,那么將直接發(fā)布任務(wù)結(jié)果,并將Mission Complete變量設(shè)置為true,以防止玩家進入任意通道再次完成任務(wù)。

首先,返回Level Blueprint。在Narration End變量設(shè)為true后,我們將啟動帶有Delay功能的計時器。在第二個“Set Narration End”的Exec引腳處牽引并創(chuàng)建Delay功能。

之后,進入其中任意通道來檢查任務(wù)是否已經(jīng)完成。從Functions列表中將GetPaths功能拖入。然后,分別在兩個Path引腳處牽引并創(chuàng)建“Get Mission Complete”。

如果Mission Complete布爾值都不為true,那么我們就可以發(fā)布Mission Result事件。通過使用“OR boolean”節(jié)點和Branch來驗證,如下所示:

在False Exec引腳處,新增在Player上發(fā)布“Play_MissionResult”的功能。與前面一樣,通過將“Post Event”功能的Actor引腳與“Get Player Character”功能相連來實現(xiàn)這一點。

發(fā)布事件后,我們要將Mission Complete變量設(shè)為true??梢酝ㄟ^再次使用Get Paths功能來實現(xiàn),需要注意的是這里需要SETTING Mission Complete,而不是獲取它。

整個關(guān)卡藍圖如下所示:

保存成果并分別測一下5種不同的情景,看看它們是否工作正常。若發(fā)現(xiàn)問題,請仔細排查疏漏。若一切正常,那么恭喜你!動態(tài)對話系統(tǒng)創(chuàng)建成功。

特別鳴謝本文翻譯:劉暢(騰訊北極光工作室,音頻設(shè)計師)

本文作者

杰克?蓋米林 (JAKE GAMELIN)

作曲家 | 音樂老師 | 聲音設(shè)計師

杰克?蓋米林 (Jake Gamelin) 是一名作曲家、音樂老師、技術(shù)音頻設(shè)計師,目前居住在美國南加州。在圣地亞哥州立大學接受音樂教育之后,杰克參與制作了很多小型電子游戲項目。與此同時,他還積極從事互動音頻設(shè)計和音樂的研究與教學。一方面希望能拓展自身的聲音設(shè)計技能,另外也想培養(yǎng)有意從事游戲音頻的新人。

https://www.jakegamelin.com/


對白 | 基于Wwise與Unreal Engine的語音設(shè)計的評論 (共 條)

分享到微博請遵守國家法律
通河县| 南通市| 富宁县| 新宁县| 大田县| 高陵县| 平原县| 依安县| 友谊县| 休宁县| 栾城县| 常德市| 来安县| 洛阳市| 永济市| 文安县| 文登市| 定边县| 湘潭市| 阜平县| 茌平县| 始兴县| 天气| 红河县| 龙门县| 镇赉县| 崇明县| 柘荣县| 钟祥市| 汤阴县| 应城市| 阳东县| 定远县| 宝山区| 扎鲁特旗| 尼玛县| 鸡泽县| 张掖市| 山西省| 沛县| 苍山县|