1. 程式人生 > >虛幻4 汽車行駛如何產生揚塵和濺水的效果

虛幻4 汽車行駛如何產生揚塵和濺水的效果

顏色 批量處理 意思 com 清除 初始 但是 font 同時

關鍵詞:unreal4、虛幻4、汽車、揚塵、濺水、粒子效果

實現思路:通過在四個車輪的底部添加四個ParticleSystem,並通過blueprint控制粒子系統的施放邏輯。

一、虛幻4汽車在沙地上行駛時,如何揚起塵土?

A.首先,需要先把粒子效果制作出來,可以參考官方學習教程的”賽車遊戲”裏開車時的粒子效果。

技術分享圖片

將賽車遊戲下載下來後,創建工程。

技術分享圖片

創建後可試玩,看一下效果。

技術分享圖片

B.World Settings找到GameMode模塊,點擊右邊的查找圖標,查找默認的PawnClass並打開。

技術分享圖片

技術分享圖片

打開該藍圖,發現並沒有粒子component在上面。

技術分享圖片

重新運行,並在World Outliner,點擊Type標頭排序,快速找到VH_Buggy

技術分享圖片

點擊查看該藍圖的細節,可看到有四個粒子component,應該是動態生成的。

技術分享圖片

點擊其中一個粒子component,運行時不可對其進行查找操作,可在Content Browser窗口中點擊content文件夾,並在右邊的搜索框中搜索Particle(粒子的英文),可找到揚沙子的Particle System

技術分享圖片

技術分享圖片

C.此時可停止運行遊戲,此處需要用到的是揚沙的效果和濺水的效果。

技術分享圖片

選中兩個粒子,在其中一個目標上鼠標右鍵->點擊AssetActions->點擊

Migrate

技術分享圖片

彈出AssetReport窗口,點擊Ok

技術分享圖片

彈出選擇儲存路徑,最好是選擇自己工程的根目錄Content文件夾下,如果選擇的不是根目錄會彈出提示並且材質會丟失。

技術分享圖片

技術分享圖片

如果自己的content文件夾下已經有同名文件夾但是不想同步到裏面,也可以儲存在別的地方,但是會丟失材質,需要重新去綁定。

導出後右下角會彈出成功提示,並可在自己的工程中看到一個新的文件夾Effects,這個是賽車遊戲儲存的文件夾,導過來後,可自己再對裏面的東西進行移動。

技術分享圖片

技術分享圖片

打開自己的工程,應在Content/.../Effects/Effects/VehicleEffects/下找到兩個particle system

,打開查看一下,是否有材質丟失,如果丟失對比兩個工程的粒子系統重新綁定材質。

技術分享圖片

此處有幾點要說明一下

1.Migrate選項導出,會把相關聯的MaterialTexture等等一起導出來,導出的是一個文件夾。

2.賽車遊戲的創建時的虛幻版本要選跟你工程的虛幻版本一致,否則有可能導過去後,某些文件查不到(Windows文件夾看到了文件,但是虛幻裏面的文件系統看不到)

3.一般丟失了的話,粒子會丟失material,而material會丟失texture,要從material開始重新綁定比較麻煩,所以建議還是直接導出到根目錄content

D.找到自己車子的藍圖,打開並在Components標簽頁添加粒子component,此處建議先添加一個,調好位置後再復制,改一下坐標。

技術分享圖片

可以改變不同的視角和調整移動幅度,來調整,更方便準確。

技術分享圖片

技術分享圖片

根據喜好放置,此處本人放在輪胎底部的中心處。

技術分享圖片

完成第一個後,選中第一個粒子component,按下CTRL+W,創建剩下的,只需在top視角移動即可保證四個在同一水平面,並且同一水平線的componentY坐標應該一致,同一豎直線的componentX坐標應該一致。

技術分享圖片

技術分享圖片

Details面板的Particles模塊的Template為四個粒子component綁定P_dirt_wheel_kickup粒子,可同時選中四個一次性綁定上去。

技術分享圖片

技術分享圖片

E.保存並運行遊戲,可看到有一些黑點類似石子的粒子效果,下面會介紹如何去掉這個效果,希望使用默認效果可跳過這一步驟。

技術分享圖片

打開P_dirt_wheel_kickup,粒子編輯器的界面介紹和使用請參考

https://docs.unrealengine.com/latest/INT/Engine/Rendering/ParticleSystems/Cascade/index.html

此處禁用掉GritTire Track兩個發射器,即可去掉石子的效果。

技術分享圖片

以下將說明一些會微調到的參數的作用,參數的說明可參考

https://docs.unrealengine.com/latest/INT/Engine/Rendering/ParticleSystems/Reference/index.html

1.Required模塊主要是修改粒子發射器發射的Material

技術分享圖片

2.Spawn模塊主要是修改Rate下的Distribution下的Constant,來調節噴出的粒子的速率,並在預覽窗口查看到,此處因為用到Spawn PerUnit所以constant值設置為0

技術分享圖片

3.Spawn PerUnit模塊會根據行進的距離進行發射粒子,這樣車子停止時不會有粒子產生,但移動時會產生粒子。主要會修改到的是Unit ScalarSpawn Per Unit下的constant兩個值,可以理解為每移動Unit Scalar個單位發射constant次粒子。其他參數參考官方文檔。

技術分享圖片

4.Lift Time模塊的兩個值MinMax應該很好理解,粒子的最小存在和最大存在時間。

技術分享圖片

5.Initial Size模塊的Min值和Max值分別是修改粒子的最小體積和最大體積。

技術分享圖片

6.Initial Velocity模塊會修改到的是Min值、Max值和In World Space選框,不同方向的最大和最小速度矢量以及是否是以世界坐標系為標準。

技術分享圖片

7.Initial Rotation模塊MinMax同上面意思一樣就是粒子出生時的最小和最大值,此處註意一個就是1表示旋轉360°。

技術分享圖片

8.Size By Life模塊有需要請參考官方文檔,主要是粒子的生命周期內按設置的不同的比例縮放體積大小(在之前Initial Size的基礎上),例如此處設置(5,1,1)(1,1,1),粒子會以(5,1,1)的比例產生,然後會縮小到(1,1,1)的比例。

技術分享圖片

技術分享圖片

技術分享圖片

9.Acceleration模塊是設置加速度的,constant值和In World Space選框很好理解,就是沿著哪個軸的方向施加加速度以及是否是世界坐標為準。

技術分享圖片

10.Sphere模塊是設置粒子產生位置的,Initial Color模塊是設置產生時粒子的顏色,Scale Color/Life模塊是設置粒子生命周期過程中的顏色變化,這幾個此處略過不提,有需要參考文檔。

F.此處是較快的得到揚塵的效果的做法,套用別人的粒子發射器,有條件深入學習粒子系統是最好的,此處調整完後,車子已經具備了揚塵的功能了,但是還有一些地方需要處理,因為SpawnPerUnit使用的是運動增量,會有可能出現,車子明明在移動但是粒子發射器沒有發揮作用。

在車子的藍圖裏寫或者創建一個SceneComponent然後添加到車子的component列表裏面。

技術分享圖片

技術分享圖片

先創建一個Particle System Component(粒子系統組件)的數組,用於存放四個粒子發射器,好做批量處理。

技術分享圖片

再創建一個Wheel Vehicle Movement Component 4W的變量,根據你車子的車輪類型即可,用於獲取車子前進後退狀態。

技術分享圖片

技術分享圖片

再創建一個存放車子當前狀態的int變量。

技術分享圖片

在遊戲開始時儲存四個粒子發射器和一個車輪移動組件到對應的變量中。

技術分享圖片

車子前進時沙子應朝後面飛起,後退時沙子應向前面飛起,停止時應把粒子清除掉,不然剎車停止時,粒子還會再飛一會。每個tick獲取一次車子狀態。

技術分享圖片

Sequence第一個出口判斷車子當前的forward方向的速度是否大於零並且車子速度的標誌位CarVelocityFlag如果不是1說明之前的狀態不是前進狀態現在是前進狀態,就調用改變粒子發射器方向的方法。

技術分享圖片

Sequence第二、三個出口,同理,不做贅述。

技術分享圖片

技術分享圖片

以下是ChangeParticleDirection方法,前進時沿Y軸轉動45°,粒子發射器們斜朝車後,後退時沿Y軸轉動-45°,發射器們斜朝車前,此處的粒子效果是朝上噴射的,轉動Y軸角度即可斜向噴出。

技術分享圖片

技術分享圖片

以下是ClearParticle方法,將粒子系統的ParticlesTemplate設置為None即可。

技術分享圖片

技術分享圖片

車子揚塵的效果到這裏就完成了。

二、虛幻4汽車在淺水上行駛時,如何濺起水花?

A.操作步驟跟車子揚塵的操作步驟差不多,打開P_water_wheel_kickup粒子系統

技術分享圖片

添加一個Spawn PerUnit來根據移動量來決定Spawn的量,把SpawnRate改成0

技術分享圖片

啟用另一個Initial Velocity,或者在原先啟用的Initial Velocity上修改,水花向X軸的負方向噴射,向上或者向斜向上根據需要修改。

技術分享圖片

其他參數根據上方的E.中的參數簡述或者參考官方文檔進行修改。

B.接下來在車子的藍圖中或者是在上面創建的SceneComponent裏,創建一個bool變量來標誌當前地面類型和創建一個方法用來切換不同粒子系統。

技術分享圖片

在之前改變粒子朝向的方法裏再添加一個判斷來修改水噴射的朝向,此處像粒子初始的發射方向以及車子前進後退時粒子發射器的旋轉可根據實際調整。

技術分享圖片

創建一個新藍圖,並在在Component面板添加一個Box Collision

技術分享圖片

切換到Event Graph窗口,如果之前使用的是SceneComponent藍圖,遊戲開始時需要獲取一下車子Component面板中掛載的SceneComponent。此處本人的車子名字是BP_XM_CarCar4_ChildSceneComponent藍圖名字是ControlCarParticles_SceneComponent

技術分享圖片

Component面板中的BoxCollision添加進入和離開時的事件,判斷是否是這輛車,是就設置標誌位並調用方法。進入時就修改粒子為水的,出去就修改為沙子的。

技術分享圖片

將這個水域檢測的藍圖拖到場景中,並調整大小,具體形狀、大小根據需要調整。

技術分享圖片

到此濺水的功能就完成了,此處換用另一臺車,效果如下。

技術分享圖片

有條件FQ可參閱這個粒子視頻

https://docs.unrealengine.com/latest/INT/Videos/PLZlv_N0_O1gYDLyB3LVfjYIcbBe8NqR8t/OXK2Xbd7D9w/index.html

或者國內B

https://www.bilibili.com/video/av11697692/

虛幻4 汽車行駛如何產生揚塵和濺水的效果