天天看點

《Unreal Engine 4藍圖可視化程式設計》一2.3 添加音效和粒子效果

本節書摘來異步社群《unreal engine 4藍圖可視化程式設計》一書中的第2章,第2.3節,作者: brenden sewell 譯者: 陳東林 責編: 胡俊英,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

既然我們已經擁有了更好的玩家移動和射擊屬性,将我們關注的點轉向敵方目标。現在的效果是射擊目标圓柱體後圓柱體會變成紅色。然而,目前沒有任何可以被玩家完全摧毀的目标。

我們可以通過添加藍圖邏輯來添加更多的與目标之間的互動,比如在擊中目标兩次及以上時銷毀物體,同時增加玩家的獎勵,一旦目标被摧毀,就産生一個令人滿意的聲音和視覺效果。

我們需要保證cylindertarget藍圖中有使目标圓柱體的狀态變化邏輯。打開blueprints檔案夾中的cylindertarget藍圖,找到事件hit節點組。當我們的子彈擊中目标圓柱體時,這些節點通知圓柱體改換紅色材質。為了在圓柱體被擊中兩次後給圓柱體添加改變圓柱體行為的能力,我們需要為藍圖添加一個檢查圓柱體被擊中次數的計數器,然後根據狀态顯示不同的結果。如圖2.13所示操作,可以幫助我們完成這個功能。

《Unreal Engine 4藍圖可視化程式設計》一2.3 添加音效和粒子效果

為了在藍圖中建立多結果的條件邏輯,我們要利用分支(branch)節點。這裡的分支節點使用一個布爾變量作為輸入。由于布爾變量的值隻有真或假兩種情況,分支節點隻能産生兩種結果。這兩種節點可以通過連接配接的其他節點的輸出執行引腳執行,代表真通道和假通道。

建立分支的第一步時定義你的布爾變量代表什麼,并且哪些情況會将條件值從假改變為真。我們要建立一個表示目标被擊中的初始狀态,然後當目标再次被擊中時被摧毀。開始建立一個primed布爾變量吧。

回憶之前在我的藍圖(my blueprint)面闆定義的變量,讀者應該看到了之前為速度和方向定義的兩個變量。單擊加号(+)按鈕添加變量,新的變量類型預設為布爾型,是以就不用去修改了,将它重命名為primed并勾選可編輯使得在外部也能修改變量。最後,編譯、儲存藍圖。因為我們并不希望目标在一次都沒被擊中的情況下就處于primed狀态,是以我們将變量的預設值設為假(false)(編譯儲存後預設值的勾選框不勾選)。

既然有了primed布爾變量,将它從我的藍圖面闆拖放到事件圖表中,選擇擷取選項。這個将從變量中擷取狀态資料(真/假),同時也讓我們能夠在藍圖中使用它。從primed節點的輸出引腳拖出紅色引線到事件圖表,搜尋并添加分支節點。

最後,我們可以将分支節點添加到事件hit藍圖節點組。按住[alt]鍵單擊節點之間的連線,斷開類型轉換為firstpersonprojectile節點和set material節點的連接配接。先将set material節點暫時拖放到一邊,然後連接配接類型轉換為firstpersonprojectile節點的輸出執行引腳和分支節點的輸入執行引腳,現在将在目标圓柱體被擊中時都調用分支來進行判斷。

既然我們已經将分支節點激活,就需要給目标圓柱體一些指令來響應每個狀态。我們希望建立的目标可以有這3種狀态:預設(default)、擊中一次(primed)和銷毀(destroyed)。由于銷毀一個actor不能執行任何行為,是以在目标銷毀後就不能有任何行為發生。是以,我們隻需要關注預設、擊中一次這兩種狀态。

首先來完成預設狀态。由于這個分支監聽當圓柱體在每一次被擊中後圓柱體上發生的事件,是以我們希望執行之前添加的改變材質事件。如果目标現在還沒有被擊中,并且現在被第一次擊中,那麼我們需要将材質轉換為紅色。此外,我們也要将primed布爾變量設為真(true)。通過上述設定,當目标圓柱體再一次被擊中時,分支節點把行為傳遞到其他執行隊列,節點的假(false)執行隊列如圖2.14所示。

《Unreal Engine 4藍圖可視化程式設計》一2.3 添加音效和粒子效果

将set material節點移到分支節點的右邊,将分支節點的假(false)輸出執行引腳與節點set material的輸入執行引腳相連。從我的藍圖面闆中拖出primed變量至事件圖表,選擇設定選項,将primed變量的輸入執行引腳與set material節點的輸出執行引腳相連,并勾選設定節點的primed選項。這個操作将保證當目标被第二次被擊中時,分支的判斷結果為真。

下一步就是去定義從分支節點的真分支觸發的動作序列。在之前早些時候,按照我們的定義,正在摧毀一個目标時希望能夠完成3件事:聽到爆炸聲響、看到爆炸的效果、将目标對象從遊戲世界中移除。我們先從經常忽視的,但是非常關鍵和影響遊戲體驗的聲音元素開始。

我們可以設計的最基本的互動就是:在遊戲世界中的某個位置立即播放一個“.wav”聲音檔案,并且這個功能可以完美地按照我們的意願運作。從分支節點的真執行引腳拖出引線,搜尋play sound at location節點,如圖2.15所示。

《Unreal Engine 4藍圖可視化程式設計》一2.3 添加音效和粒子效果

play sound at location是一個簡單的節點,其承載一個聲音檔案和一個位置輸入,并在該位置上播放聲音。這個項目中有幾個預設的聲音檔案資源,單擊sound輸入引腳旁的選擇資源,使用者可以從下拉菜單中看到聲音檔案的清單,找到并選擇explosion01作為爆炸音效。

既然我們已經選擇了聲音資源,就需要定義在哪裡播放這個聲音。還記得怎樣通過設定目标圓柱體的網格元件設定視野嗎?可以使用與之相類似的方法來進行設定,提取出位置資訊,然後将位置向量與聲音節點直接連起來。然而,事件hit觸發器把這個事情簡化了。

事件hit節點的輸出引腳之一為hit location。這個引腳包含了被事件hit節點檢測到的遊戲世界中兩個對象發生碰撞的位置資訊。這個位置是産生爆炸效果的絕好位置,從事件hit節點的hit location引腳拖出引線與play sound at location節點的location引腳相連接配接。

編譯、儲存、最小化藍圖後,在ue4編輯器中單擊播放按鈕進行測試。射擊某一個移動目标使它變紅,然後接下來的每一次射擊都将産生一個爆炸音效。

既然我們的爆炸聲音效果已經起作用了,現在開始添加視覺效果并銷毀圓柱體,參照圖2.16進行設定。

《Unreal Engine 4藍圖可視化程式設計》一2.3 添加音效和粒子效果

從play sound at location節點的執行引腳拖出引線至事件圖表的空白區域,搜尋并添加spawn emitter at location節點。

spawn emitter at location節點看起來與play sound at location節點類似,不過它還多了旋轉輸入引腳和auto destroy開關。在emitter template下方的下拉菜單中,找到并選擇p_explosion效果。這是fps模闆中自帶的另一個标準資源,它将在發射器被添加的地方産生一個令人滿意的爆炸效果。

因為我們希望爆炸效果與爆炸音效在同一個位置生成,從事件hit節點的hit location引腳拖出引線與spawn emitter at location節點的location引腳相連接配接。爆炸是一個從所有的角度看都一樣的三維效果,是以我們可以暫時不管rotation輸入引腳。auto destroy開關決定粒子發射器是否能被多次觸發,一旦這個粒子效果被建立,我們就将包含這個粒子發射器的actor銷毀,是以我們勾選auto destroy。

最後,我們希望在爆炸的聲音和視覺效果完成後,從遊戲世界中移除目标圓柱體。從spawn emitter at location節點的輸出執行引腳拖出引線,搜尋destroy actor節點(為了找到這個節點,你可能需要暫時地将情境關聯取消勾選)并添加。這個節點隻有一個目标輸入,預設為self。由于這個藍圖包含了我們想摧毀的圓柱體對象,并且self就是我們想摧毀的,是以我們不需要對這個節點進行設定。

注意 提示  emitter(發射器)是一個在特殊位置産生粒子效果的對象。粒子效果收集了很多小的對象,将它們結合起來建立液體、氣體或其他不能觸摸的效果,比如水的沖擊、爆炸或光束。

擴充整個事件hit節點序列的注釋,并且更新上面的文本描述,寫清楚這個節點組完成了哪些功能,如圖2.17所示。

《Unreal Engine 4藍圖可視化程式設計》一2.3 添加音效和粒子效果

當你完成了注釋的添加,請編譯、儲存,最小化藍圖後,在ue4編輯器中單擊播放按鈕進行測試。當你使用槍發射子彈擊中目标圓柱體兩次後,将看到爆炸效果并聽到爆炸音效。

繼續閱讀