UE4 Game Jam 建構有車子的街道

星期五 10 May 2019   even  
遊戲開發 教學

Demo

如上很簡單的影片,我認為一個像樣的街道,至少要有車子來來去去,因此就有了上面的成果。

我建構一個car spawner的Actor放置在道路的起點,在隨機的幾秒內就會生出車子,車子走到我設定的終點就會消失,車子是由我手動model的兩種車子組成,並隨機使用4~5種顏色讓他們看起來比較豐富一些。

Pseudo Code

(1) 首先要有會動的車子,可以建立pawn再為其添加vehicle movement component,設定移動相關的參數群...,太過瑣碎了,我直接使用簡單的Actor,再以timeline來lerp他的位置,做出車子在移動的假象,你仔細一看會發現輪胎根本沒在轉動。

(2) 須設定移動的起點與終點,可以添一個空白的component (我使用BillboardComponent),將他的位置設為終點,而車子的起始位置為起點,到達終點時destroy self。

(3) 需要添加不同的顏色,設定數種顏色,在設定隨機數讓生成出來的車子隨機套上一種顏色。

(4) 需要處理車子的碰撞,我讓車子的collision設為Overlap all,為了讓場景感覺creepy一些,我讓車子overlap到主角時消失,結束overlap時又重新出現。

(5) 建構Car Spawner,設立timer,每隔隨機數秒,生出車子,然後車子就會照上面的邏輯,隨機選一種顏色,移動,消失。

(6) 將Car Spawner放置在路口,完成有車子的街道。

材質

為了達到"消失"的效果,經過我google一陣子,DitherTemporalAA可以很快得達成我要的效果,所以我設計了以下的材質,將blend mode改為masked:

之後將我設立的這個參數(DitherAlpha),以動態材質的方式,接上timeline來更新他的數值,就可以呈現出我的物件逐漸消失又逐漸出現的效果,如下的影片:

BP設置

新增一個Enum,CarColorChoice

Add New-> Blueprint->Enumeration

這個Enum只是方便我之後設定顏色而已。

Waypoint BP:

繼承自Actor,添加一個billboard component,其餘空白。

我習慣使用這個招式,方便我設立目標的位置,從之前某個教學影片中學來的技巧。

Car BP:

繼承自Actor,新增三個timeline,一個用來lerp位置,做出虛假的移動的效果,另兩個是當與主角接觸或結束接觸時,做出逐漸消失及逐漸出現的效果,將所有的材質設為動態材質,新增4個變數,init location(vector)、waypoint (object reference of waypoint)、SpeedParam(float)。

在construction script中添加:

其中的macro,Create Dyms如下:

其中的function,Set Color如下:

我的車子是由多種材質構成,其中最主要的顏色是材質一,所以我只隨機變換材質一的顏色,讓顏色後由之前建立的Enum(CarColorChoice)決定。

車子的主要程式如下:

Move (一個Custom Event )

執行之後,以timeline來更新車子的位置,並在結束時destroy self:

當與主角接觸時,觸發消失的特效,結束接觸時,觸發相反的特效:

MC(Main Character)是我的主角

我的timeline都只使用float track,設兩個keyframe,移動的time的keyframe為(0, 0)、(10, 1),另外兩個timeline的都是(0, 1)、(1, 0),小括號裡的前者是時間,後者是數值。

如下:

Car Spawner BP

繼承自Actor,新增兩個component,Arrow和Billboard,讓我很快知道哪裡是前方,以及終點在哪裡。新增三個變數,MovingLength (int)、Waypont (reference of waypoint)、SpeedParam (float),建立以下的construction script,讓我可以很快地在箭頭的正前方MovingLength的位置設立終點:

接著,在begin play時執行set timer by event:

這個event的邏輯如下:

因為我兩種車子的材質數量不一樣,所以兩種車子各自建立一個BP,在以隨機數來決定現在要生出哪種車子。

最後,將car spawner丟到地圖上,然後車子就會自動跑出來了。

2019 UE4 Spring Game Jam 開發心得
UE4 Game Jam 經驗談
UE4 Game Jam 遊戲企畫與開發日誌
UE4 Game Jam 難題排除
UE4 Game Jam 建構有車子的街道
UE4 Game Jam 敵人鎖定系統

相關文章:

>