接着上次繼續學習,現在我們已經有了一個場景並且運行了,我們需要添加一個角色到場景中。要這樣做,我們必須從UE4的GameFramework類繼承它。
一. 創建一個從Character類繼承的類
從基本框架類繼承是很簡單的:
1) 在項目中打開你的UE4編輯器。
2) 在文件,選擇“新建C++類”。
3) 這里你可以選擇從Pawn類(Pawn類從控制器接收輸入)繼承或從Actor類繼承。不過我們可以這里選擇從Character類(角色)繼承。
4) 點擊繼續,然后你可以命名這個類。這里我們將其命名為Avatar。
5) 最后點擊創建類來使用代碼創建這個類。
6) 然后UE4會自動運行你的VS項目。我們在項目解決方案中打開Avatar.h文件:
Avatar.h是這樣的:
// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "GameFramework/Character.h" #include "Avatar.generated.h" UCLASS() class MYFIRSTCODE_API AAvatar : public ACharacter { GENERATED_BODY() public: // Sets default values for this character's properties AAvatar(); // Called when the game starts or when spawned virtual void BeginPlay() override; // Called every frame virtual void Tick( float DeltaSeconds ) override; // Called to bind functionality to input virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; };
UCLASS()和GENERATED_UCLASS_BODY()都是UE4定義好的宏,UCLASS()宏使得你的C++代碼在UE4編輯器中可用。GENERATED_UCLASS_BODY()會適當處理你的類函數成為一個UE4類。現在你不需要徹徹底底地搞清楚它們的工作原理,你只需要確保它們在正確的位置出現。
二. 為角色創建一個模型
現在我們avatar是繼承了角色類,但是還需要給角色賦予一個模型。我們可以從UE4的商城找免費的模型,步驟如下:
1) 點擊工具欄的市場,進入UE4的商城。
2) 在類別中選擇角色,找到一個名字叫Animation Starter Pack的免費資源包,點擊進去。
4) 點擊下圖中的免費按鈕添加到庫里面。(可能加載有點慢,耐心等待,我加載了幾分鍾呢)
5) 下載完后點擊庫,點擊“添加到工程”。
6) 在新窗口中,選擇Demo1,然后點擊添加到項目。
7) 現在,我們可以找到剛才添加的資源,在內容瀏覽器點擊選擇路徑:
8) 選擇AnimStarterPack文件夾:
三 在運行時改變載入的資源
載入網格通常情況下,如果使用C++代碼來指定要載入的資源,這是一種硬編碼的壞習慣。在運行程序的時候,如果資源發生了改變,則程序不會做出改變。更好的做法是,可以在運行時改變載入的資源。
下面我們從C++類中創建一個藍圖:
1) 在菜單欄中的窗口-開發者工具-類別查看器。
2) 在類別查看器中,右擊Avatar,選擇創建藍圖類。(如果找不到Avatar,請關閉UE4編輯器,再重新打開)
3) 在下方輸入藍圖類名稱(我這里是BP_Avatar),點擊保存。然后會來到藍圖編輯器:
4) 在左上角的組件窗口中,選擇Mesh:
5) 在右側的細節面板中,在Mesh選項卡中,選擇下拉按鈕,然后點擊視圖選項,點擊顯示引擎內容,再選擇TutorialTPP。
6) 這時候碰撞體看起來是這樣的,模型和碰撞體是對不上的:
7) 然后我們通過W、E、R快捷鍵變換模型,使之近似地包圍在碰撞體里面。如果碰撞膠囊體不夠大,你可以點擊組件的CapsuleComponent,然后在細節面板的Shape調節膠囊體大小:
8) 然后我們可以關閉窗口。在內容瀏覽器中將BP_Avatar拖放到場景中。
四 添加動畫動作
添加動畫你可以看到人物模型是呈T型的,3D建模/動畫師通常都會讓人物默認狀態下擺T型,因為此時這可以使得人物做出各種各樣的動作。
1) 雙擊內容瀏覽器的BP_Avatar,重新打開藍圖編輯器。
2) 在上方選項卡中點擊視口,然后選擇Mesh,在右側的細節面板中的Animation選項中的Anim Blueprint Generated Class中選擇UE4ASP_Hero_AnimBlueprint。
這樣就完成了一個模型的動畫添加了,關於動畫的更多細節,我們在后面的教程中會深入探討。
五 添加攝像機
為了使得我們有一個第三人稱視角,我們給該角色添加上攝像機以追隨該角色。
1) 在組件中進行如下的步驟:
2) 移動攝像機並旋轉角色到如下狀態(注意角色的藍色箭頭是角色的前進方向,所以要使得攝像機和角色自身的朝向都要面對着藍色箭頭):
3) 點擊工具欄的保存。
現在的角色還不能被控制,我們下一節繼續講如何編寫C++代碼來控制角色。