UE5 游戲模板 —— FirstShootGame
- 前言
- 一、GameMode
- 二、組件
- 1.ShooterPickUpComponent
- 單播
- 多播
- 2.ShooterWeaponComponent
- 附著武器
- 開火
- 3.小結
- 4.ShooterProjectile
- 初始化
- 碰撞受擊檢測
- 三、Character
- 初始化
- 輸入移動
- 總結
前言
有了前兩個俯視角游戲的基礎讓我們來看看相對復雜點的第一人稱射擊模板。
模板主要演示的功能:拾取武器裝備到角色身上、射擊發射子彈
一、GameMode
已經是我們的老朋友了,指定了默認的Pawn,也就是操作的玩家。
二、組件
1.ShooterPickUpComponent
初始化了球形碰撞體的半徑
綁定開始碰撞事件
在綁定的碰撞事件中判斷碰撞的Actor類型,然后廣播OnPickUp(綁定的藍圖事件)
移除碰撞綁定,避免再次進入碰撞函數
這里講一下UE的廣播
經常使用的有 單播 多播 動態單播 動態多播
單播
先來說一下單播 既1對1 綁定 觸發一個相應一個
典型的定義方式如下,分別是無參無返回、有N個參數無返回、有N個參數有返回
綁定的方式有很多,其實可以很簡單的理解,我們當前定義的委托要用在什么場景,就用哪種方式進行綁定
那什么是動態單播呢?其實也很好理解,如果是動態的就可以暴露給藍圖進行實現
DECLARE_DYNAMIC_DELEGATE_OneParam(FTestDelegate04,int,Value);FTestDelegate04 TestDele04;
多播
多播就是一對多,且動態多播可以更直接的暴漏給藍圖使用
回到我們的第一人稱模板
BlueprintAssignable 這個屬性標簽就是把多播暴漏給藍圖使用的
可以看到在藍圖中綁定了一些函數,接下來我們再回到代碼中綁定一個函數,這樣就是一對二也就是一對多的動態多播了
2.ShooterWeaponComponent
附著武器
當我們碰撞到球形碰撞體后,調用到了動態多播,動態多播是由藍圖實現的,又調用到了我們的下一個組件ShooterWeaponComponent 去附加武器到角色身上
將自身附加到目標角色的骨骼上,綁定添加開火的輸入
開火
綁定按鍵后,我們按下鼠標左鍵需要發射子彈
計算生成子彈的位置并生成子彈
播放射擊音效
播放動畫蒙太奇
3.小結
你可能感覺這樣的組件式設計十分難以理解甚至是榮譽,其實這樣的做法大有妙處,我們可以很快的衍生出各種武器的拾取射擊,甚至連武器的輸入方式不同可以輕松處理,ShooterPickUpComponent 組件只負責拾取,所有需要拾取的武器只需要掛載此組件便可以拾取,ShooterWeaponComponent 處理附加到骨骼以及射擊的功能,每種武器的模型不同動畫不同聲音不同,甚至是操作不同,但是通過這個組件就能巧妙的動態配置了。
4.ShooterProjectile
子彈組件,UE自帶的UProjectileMovementComponent 組件就是用來處理這種發射物的,里面的功能非常強大。
初始化
只要對我們的子彈Actor掛載UProjectileMovementComponent 組件我們就可以實現子彈效果,設置參數如下
碰撞受擊檢測
給碰撞到的物體添加一個子彈速度方向的力并銷毀自身
三、Character
我們的輸入可以在PlayerController中去管理,也可以在角色中管理,具體如何管理和游戲模式有關,PlayerController更像是全局的一個控制,比如英雄聯盟中的視角移動我們可以做到PlayerController中,而每個英雄的具體移動可以放到角色中去。
初始化
輸入移動
總結
可以看出雖然是入門級別的模板其中的細節非常多,并不是堆砌代碼而是有條理的完成一個小Demo