從零開始學虛幻4遊戲開發系列23
來自專欄笨貓快樂學編程
歡迎繼續我們的學習。
在這一課的內容中,我們將添加一些障礙物,讓遊戲增加點挑戰性~
下面是我們用作障礙物的紋理貼圖:
打開BP_Tunnel,在Components面板處添加一個Static Mesh組件,並將其命名為WallMesh。
接下來在Details面板中將Static Mesh的屬性更改為SM_Hole_01。
然後將Location屬性設置為(2470,0,0)。這樣就會讓障礙物出現在隧道的末端。
為了讓遊戲變得更加有趣一點,作為障礙物的牆最好可以旋轉。
在My Blueprint面板處添加一個新的Float類型的變數,並將其命名為RotateSpeed。將Default Value設置為30。
接下來切換到Event Graph視圖,找到Event Tick節點,並創建以下的設置:
這樣一來,就可以讓WallMesh每幀旋轉指定的次數。
點擊藍圖編輯器上的Compile按鈕,然後返回到主編輯器。按下Play按鈕來查看旋轉的牆壁。
接下來讓我們給這些牆加點花樣。
創建不一樣的牆
說到創建不一樣的牆,或許你第一時間想到的是為每個不同的牆創建一個新的藍圖。其實不然,只需要將當前的WallMesh隨機化就好。
打開BP_Tunnel,創建一個新的函數,將其命名為RandomizeWall。接下來創建如下的連線:
顧名思義,Set Static Mesh節點的作用就是將WallMesh設置為所提供的mesh。
為了創建一系列的static mesh,我們需要用到Select 節點。
左鍵從New Mesh埠拖出一條線,然後添加一個Select 節點如下:
使用Select節點,可以讓我們設置一系列的選項。其中Index處的輸入值決定了Select節點的輸出選項。
因為我們現在有四種wall mesh可以用,所以需要再創建兩個選項埠。只需在Select節點上右鍵單擊,然後選擇Add Option Pin即可。重複這個操作,直到Select節點上出現四種選項。
接下來將每個選項分別按照如下方式來設置:
Option 0: SM_Hole_01
Option 1: SM_Hole_02
Option 2: SM_Hole_03
Option 3: SM_Hole_04
好了,現在可以讓我們選擇其中的一種隨機選項。
隨機生成牆
我們可以使用Random Integer in Range節點來獲取一個隨機數,該節點將返回在Min和Max之間的一個隨機數。
在視圖中添加一個Random Integer in Range節點,然後將其連接到Select節點的Index埠。
將Max的數值設置為3,這樣我們就得到了四種可能的數字:0,1,2和3。
為了讓牆的顯示更加隨機,讓我們再給WallMesh添加一個隨機選中。
在Set Static Mesh節點之後添加以下節點:
通過這樣的方式,我們給WallMesh添加了0到360度的隨機旋轉角度。
好了,現在來看看當前的連線圖:
簡單總結下我們已經完成的工作:
1.Select節點用於選擇不同的mesh紋理
2.使用Random Integer in Range節點來選擇一個隨機的mesh
3.使用Set Static Mesh節點將WallMesh設置為所選擇的mesh
4.使用AddLocalRotation節點給WallMesh添加一個隨機的旋轉偏移
點擊藍圖編輯器工具欄上的Compile按鈕,然後關閉RandomizeWall視圖。
打開BP_TunnelSpawner,切換到SpawnTunnel視圖,添加下圖中用黃色標出的節點:
好了,現在當隧道生成的時候,會顯示一個隨機的牆的紋理。
點擊藍圖編輯器上的Compile按鈕。然後返回到主編輯器,並按下Play按鈕來預覽遊戲的效果!
當我們碰到某個牆的時候,就會停止向前運動。不過當我們左右移動並穿過某個洞時,就會再次向前運動。
在下一課的內容中,我們需要實現以下的效果。當玩家碰到某個牆的時候,停止向前運動。
好了,本課的內容就到這裡了,我們下一課再見~
推薦閱讀:
※從零開始寫引擎(OPENGL)(四)-後處理實現
※從零開始手敲次世代遊戲引擎(五十一)
※[GDC16] Optimizing the Graphics Pipeline with Compute
※pixi-action - 一個類似 cocos2d-x 使用方法的 Pixi.js 動畫插件
※從零開始手敲次世代遊戲引擎(五十二)