斯坦福UE4C++課程P7-P9玩法&物理碰撞
本章主要講了碰撞通道、對象類型、Block Overlap Ignore。
這節(jié)我們先添加左右移動MoveRight和控制俯仰旋轉(zhuǎn)LookUp的功能,并區(qū)分控制器/角色。
Controller.h是AI(AIController.h)和玩家(PlayerController.h)控制器頭文件
擁有控制旋轉(zhuǎn)功能(供相機使用),區(qū)別于Pawn的旋轉(zhuǎn)
PlayerController.h每個玩家用一個,接受玩家輸入
AIController.h每個AI用一個,控制Pawn運動的邏輯
之前的moveforward使用角色向前向量,我們改成使用控制器的向前向量,使得WS是和相機平行的。
同理修改moveright,我們更改如下:

目前已經(jīng)為角色建立了基本的運動。下面建立魔法攻擊動作
我們新建SMagicProjectile類(繼承自Actor類)
新建藍圖類MagicProjectileBP繼承前者

我們?yōu)楣魟幼鹘壎ㄦI(動作映射Action Mappings)。
設(shè)置鼠標(biāo)左鍵為攻擊動作。
PrimaryAttack函數(shù):生成彈球
?現(xiàn)在點擊鼠標(biāo)左鍵角色中心會發(fā)射魔法球,這不太好,我們想要它從手中發(fā)出去
角色骨骼m(xù)esh中,muzzle是手部骨骼,在C++中獲取它。
現(xiàn)在效果如下

設(shè)置魔法球movement comp的gravity scale為0,使其不受重力影響。
現(xiàn)在看到魔法球仍可穿透墻,這是因為物理碰撞效果受雙方同時影響,設(shè)置好魔法球和墻的碰撞即可。
也可以在魔法球C++類中設(shè)置:
可在項目設(shè)置-collision-presets中新建名為Projectile的預(yù)設(shè)文件,直接供魔法球C++類使用。

下面創(chuàng)建一個爆炸桶藍圖類,魔法球打到上面會讓它炸,爆炸施加范圍內(nèi)的沖量(用徑向力組件實現(xiàn))


效果如下:


作業(yè)中未完成的還有為跳躍綁定動作,用C++重新實現(xiàn)爆炸桶。
綁定跳躍:(Jump函數(shù)為Character類自帶,不需自己實現(xiàn)),用空格鍵綁定。
C++實現(xiàn)爆炸桶:頭文件添加兩個組件,靜態(tài)網(wǎng)格體和徑向力組件(注意徑向力組件設(shè)置為藍圖可讀寫),cpp文件設(shè)置參數(shù)
藍圖類繼承爆炸桶,添加on component hit觸發(fā)fire impulse即可。
效果如下:
