07_P61~P73ThePawnClass
61 Pawn Creation
?Creating a Pawn Class
?pawn 單位
?創(chuàng)建一個(gè)pawn的c++類,并且創(chuàng)建基于這個(gè)pawn的藍(lán)圖
62? 在創(chuàng)建的pawn藍(lán)圖中,使用C++創(chuàng)建一個(gè)膠囊體Capsule
?在https://docs.unrealengine.com/5.1 中查看對(duì)應(yīng)方法的類
?
63 Forward Declaration前置聲明
?only including what you need
?
?
64 Skeletal Mesh Component骨骼網(wǎng)格組件
Meshes That Have Skeletions
USkeletalMesh
USkeletalMeshComponent
與創(chuàng)建根組件相同
需要使用到USkeletalMeshComponent 類
首先聲明一個(gè)USkeletalMeshComponent的指針
然后使用CreateDefaultSubobject 創(chuàng)建帶SkeletalMeshComponent
最后使用SetupAttachment 將其與Capsule 也就是RootComponent關(guān)聯(lián)上
在UE中,打開panw藍(lán)圖,設(shè)置brid的動(dòng)畫
然后設(shè)置動(dòng)畫
最后將pawn藍(lán)圖 放置在場(chǎng)景中, 運(yùn)行就可以的到一個(gè)有動(dòng)畫的brid
65 Binding Inputs綁定輸入
Assigning Axis Mappings
在虛幻中,游戲會(huì)為我們(Player)分配一個(gè)控制器(Acontroller)
用這個(gè)控制器,游戲可以知道“這個(gè)”是我們
游戲控制器可以控制pawn
我們?nèi)绻枰刂气B的話,則需要讓控制器possess擁有鳥
注意 pawn可以被possess擁有,但是actor不可以
我們一旦possess了鳥,則鳥可以從我們?cè)O(shè)置的控制器那里獲取我們的輸入
首先需要編輯控制器
進(jìn)入菜單“編輯” -> “項(xiàng)目設(shè)置”-> “引擎” -> “輸入”
找到“軸映射”
添加W的按鍵映射
如果是已經(jīng)導(dǎo)入了自帶的第三人稱模版 則有下面這些內(nèi)容:

使用代碼 設(shè)置默認(rèn)玩家player0
?
?然后我們?cè)诜椒ㄖ?將設(shè)置的W映射名稱與對(duì)應(yīng)的函數(shù)方法 綁定起來 如下
并且在MoveForward()方法中,打印傳入的value的值
?執(zhí)行后發(fā)現(xiàn),當(dāng)我們不按W的時(shí)候,輸入為0,按下W后 ,輸入為1,符合預(yù)期
66 Adding Movement Input添加輸入事件
Moving Our Brid
使用AddMovementinput方法來觸發(fā)移動(dòng)
//還用了AddActorWorldOffset來實(shí)現(xiàn)移動(dòng)
需要先判斷Controller不為空,并且傳入的value不為0
使用AddMovementinput ,需要在藍(lán)圖中添加FloatingPawnMovement的組件,來“識(shí)別”按鍵傳入的值,并且使用FloatingPawnMovement組件,可以實(shí)現(xiàn)更豐富的移動(dòng)效果
如果只是使用AddActorWorldOffset來進(jìn)行移動(dòng),則更復(fù)雜的移動(dòng)方式(比如加速度)則需要自己實(shí)現(xiàn)
67 Camera and Spring Arm相機(jī)和彈簧臂
Adding Camera and Spring Arm Components
在藍(lán)圖中添加攝像機(jī)和彈簧臂組件

?C++里面創(chuàng)建彈簧臂組件和攝像機(jī)組件
在構(gòu)造函數(shù)中初始化(綁定)彈簧臂和攝像機(jī)組件
68 Controller Input控制器的輸入
Adding Rotation to the Controller

?
//X軸 圍繞X軸旋轉(zhuǎn) &ACharacter::AddControllerRollInput
//Y軸 圍繞Y軸旋轉(zhuǎn) &ACharacter::AddControllerPitchInput
//Z軸 圍繞Z軸旋轉(zhuǎn) &ACharacter::AddControllerYawInput
?
使用藍(lán)圖實(shí)現(xiàn)左右 和上下旋轉(zhuǎn)
首先在項(xiàng)目設(shè)置 輸入中 添加鼠標(biāo)的X軸 和Y軸
然后在pawn藍(lán)圖中,添加如下事件
其中,輸入軸turn LookUp 是在上圖中的設(shè)置名字
?

?在C++中實(shí)現(xiàn)相同的功能
最后編譯 就可以實(shí)現(xiàn)效果
在調(diào)試過程中 ,我們會(huì)發(fā)現(xiàn)一個(gè)圓球,這個(gè)是游戲模式自帶的pawn:DefaultPawn
?

?因?yàn)槲覀儺?dāng)前沒有創(chuàng)建單獨(dú)的游戲模式,當(dāng)前使用的是系統(tǒng)自帶的基本模式
這個(gè)圓球是自帶的,所以會(huì)出現(xiàn)
?

69 Setting the Default Pawn設(shè)置默認(rèn)pawn
Setting the default pawn for the level
創(chuàng)建一個(gè)藍(lán)圖類,選擇游戲模式基礎(chǔ)

?打開藍(lán)圖,修改默認(rèn)pawn為我們創(chuàng)建的pawn

70 小結(jié)