3D遊戲開發之在UE4中建立非玩家角色(NPC)

 

接着上節咱們繼續學習,如今咱們來建立一些NPC(non-playable characters,非玩家角色)。在這個遊戲中,當咱們靠近NPC時,它們會作出相應的反應。瀏覽器

一 建立C++類

1) 在UE編輯器中,打開文件-新建C++類,選擇從Character(角色)類繼承,而後命名子類爲NPC。編輯器

2) 編寫代碼。打開NPC.h文件:
添加頭文件:(注意包含頭文件必須在#include "NPC.generated.h"這一行前面加)ide

#include "UObjectGlobals.h"

在原來的代碼基礎上添加以下代碼:函數

public:
//在目錄Collision下建立球體屬性(隨處可見,藍圖只讀),該屬性用做碰撞體
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Collision) USphereComponent* ProxSphere;
//在目錄NPCMessage下建立字符串屬性(隨處可見,藍圖可讀寫)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = NPCMessage) FString NpcMessage;

說明:FString是UE4的專用字符串類型,當你在UE4中開發遊戲中,應該優先使用FString而不是STL裏面的String。由於UE4的FString等內置類型保證了跨平臺功能。工具

3) 從新編譯UE4項目。學習

二 建立藍圖類

1) 在內容瀏覽器,右擊NPC類,而後從這裏建立一個藍圖類。注意給每一個藍圖類都命名一個獨有的名字,由於以後咱們給不一樣的NPC賦予不一樣的模型網格和不一樣的消息。字體

2) 如今打開藍圖編輯器,選擇從添加組件中選擇Mesh網格,而後在細節面板更改Skeletal Mesh(骨骼網格)爲SK_Mannequin。ui

3) 像以前同樣調整膠囊碰撞體到適合位置。spa

4) 在組件面板中選擇藍圖自身。而後在默認選項卡,找到NpcMessage屬性。這是從咱們C++代碼中建立的屬性而且能夠在藍圖中應用。在UPROPERTY()函數裏面添加了一個NpcMessage的字符串變量,而且指定了在藍圖類中可讀寫,因此在細節面板中能夠進行編輯了。3d

5) 你能夠繼續建立一個NPC藍圖類(或者直接從原來的NPC藍圖類中複製一個新的藍圖類),而且能夠分別設置不一樣的NPCMessage。接着將這兩個藍圖類拖動到場景中。

接下來咱們講解如何將每一個NPC自身的消息在遊戲中顯示給玩家看。

三 UE4建立平視顯示器(HUD)

爲了展現對話框,咱們須要自定義一個HUD(heads-up display,即平視顯示器)。

什麼是HUD?
HUD是平面顯示界面,就是平時咱們玩3D遊戲提供給玩家的2D菜單界面。HUD類提供了渲染文字、貼圖、矩形和材質的渲染,建立後也能夠經過藍圖來編輯。

建立HUD子類

1) 點擊文件-新建C++類;(簡單的步驟咱們就再也不截圖了,相信你們也都知道怎麼操做了)

2) 選擇從HUD類繼承來建立咱們本身的類;

3) 給你的類命名,在我這裏命名爲MyHUD。建立好後就會自動打開VS開發環境。

在VS編輯代碼

在MyHUD.h中裏面添加以下代碼:

 

UCLASS()
class MYFIRSTCODE_API AMyHUD : public AHUD
{
	GENERATED_BODY()
public:
	// 添加字體屬性(隨後咱們在藍圖編輯器中設置字體類型)
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = HUDFont) UFont* hudFont;
	// 下面這個重載函數每幀會被調用一次,在這個函數的定義裏面來渲染字體
	virtual void DrawHUD() override;
};

 

在MyHUD.cpp中添加以下代碼:

void AMyHUD::DrawHUD()
{
	// 先調用父類DrawHUD()函數
	Super::DrawHUD();
	// 接下來就渲染東西
	// 下面是畫一條從(200,300)到(400,500)的藍線:
	DrawLine(200, 300, 400, 500, FLinearColor::Blue);
	// 下面寫一行文字(參數分別爲文字、位置、字體、縮放、顏色):
	DrawText("UE4 is very interesting!", FVector2D(0, 0), hudFont, FVector2D(1, 1), FColor::White);
}

四 在藍圖編輯器設置字體

1) 點擊工具欄的藍圖-遊戲模式-HUD:HUD-建立-MyHUD,來建立一個藍圖類,名字改成BP_MyHUD。

2) 在右側的細節面板中選擇字體:

 

3) 保存退出,而後打開以前建立的遊戲模式的藍圖類:

4) 在HUD class中選擇BP_MyHUD做爲咱們的默認HUD。

最後,你能夠運行來看看HUD的效果:

未完待續

相關文章
相關標籤/搜索