最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

16_156~166Combat

2023-03-24 17:36 作者:俯瞰萬千風(fēng)景  | 我要投稿

156?Actor ComponentsActor組件

Creating Our Own Custom Components創(chuàng)建我們自己的自定義組件

創(chuàng)建自定義組件,可以專門包含一些功能,例如生命值,Gold,XP 等等

在UE中創(chuàng)建一個(gè)Actor Component的C++類


給這個(gè)類添加生命值屬性

然后我們給Enemy類添加這個(gè)組件

編譯之后就可以在UE中看到敵人有新添加的組件

157?Widget Components小工具組件

Creating a Health Bar for the Enemy為敵人創(chuàng)建一個(gè)健康條

創(chuàng)建一個(gè)UHealthBarComponent類,命名為HeathBarComponent //視頻里面這里錯(cuò)了,應(yīng)該是UHealthBarComponent 不是UWidgetComponent

然后先給Enemy類添加一個(gè)UHealthBarComponent組件,綁定在root根上(需要添加UMG模塊,添加頭文件)

//注:這里創(chuàng)建的也應(yīng)該是UHealthBarComponent類,而不是UWidgetComponent

編譯代碼之后,就可以在UE中看到Enemy多了一個(gè)組件,將之前新建的HealthBar UI添加至組件

158?User Widget Class用戶小工具類

C++ Class for our Health Bar Widget用于我們的健康欄小工具的C++類

創(chuàng)建一個(gè)UserWidget類,命名為HealthBar類

在HealthBar類中,新建UProgressBar對象,

編譯之后,回到UE中,打開WBP_HealthBar,我們需要修改父類

修改3 ,為創(chuàng)建的HealthBar

這里C++類的名字應(yīng)該與空間中原來默認(rèn)的名字相同

否則C++將無法控制到這個(gè)進(jìn)度條組件

159?Setting the health Percent設(shè)置健康百分比

Accessing the HealthBar UserWidget in C++在C++中訪問健康條的用戶小部件

在UHealthBarComponent中

在Enemy類中

編譯之后,回到UE中執(zhí)行,就可以看到在enemy類中,可以設(shè)置血條顯示

160?Damage傷害

UE中內(nèi)置了傷害方式

因?yàn)槭褂肨akeDamage需要使用actor和一個(gè)controller,所以我們需要在裝備武器的時(shí)候,將對應(yīng)的信息傳入Weapon類中

給Equip方法添加了兩個(gè)傳入?yún)?shù)


在方法中設(shè)置這兩個(gè)參數(shù)

然后在Character類中,EPressKey方法中,傳入

在UAttributeComponent類中,創(chuàng)建兩個(gè)方法,用于更新血條進(jìn)度 和 在受到傷害后更新血量

然后我們在武器命中方法中,使用UGameplayStatics::ApplyDamage()添加傷害

在Enemy中,使用TakeDamage,接受收到傷害的方法

編譯代碼

然后來到UE中,我們需要設(shè)置場景中Enemy的Health和MaxHealth


運(yùn)行游戲,攻擊敵人,可以看到血量減少

161?Custom Health Bars自定義健康條

Spicing up the HUD 為HUD增色

用自己的圖片替換掉系統(tǒng)默認(rèn)的進(jìn)度條樣式

162?Enemy Death Animations死亡動(dòng)畫

Animations for Enemy Death

從mixamo導(dǎo)入死亡動(dòng)畫,從blander轉(zhuǎn)換一下 使其有root根動(dòng)畫

將轉(zhuǎn)換好的動(dòng)畫導(dǎo)入U(xiǎn)E,并創(chuàng)建一個(gè)Paladin_Death的動(dòng)畫蒙太奇,將動(dòng)畫加入AM中

一定要記得在編輯器里,編輯好蒙太奇動(dòng)畫后,需要去點(diǎn)一下那個(gè)清除!


163?EnemyDeath敵人的死亡

Deading Some Fools欺騙一些愚蠢的人

在Enemy中,新建蒙太奇變量,新建一個(gè)方法處理角色死亡

在UAttributeComponent中,添加一個(gè)方法判斷角色生命值是否大于0

實(shí)現(xiàn)Die方法

然后在GetHit_Implementation方法中,將之前判斷角色受擊動(dòng)畫用if包含起來,先判斷角色是否死亡

如果沒有則處理受擊事件(播放受擊動(dòng)畫,扣除血量),否則處理死亡事件(播放死亡動(dòng)畫,處理Enemy的Actor消失)


164?Death Poses死亡姿勢

Making the Enemy Stay Down!讓敵人躺在地

將之前準(zhǔn)備的死亡動(dòng)畫,最后一幀提取為新的動(dòng)畫


準(zhǔn)備好之后,來到ABP_Paladin的動(dòng)畫藍(lán)圖

我們可以在動(dòng)畫藍(lán)圖事件中這么操作,讓動(dòng)畫每一幀都去設(shè)置DeatPose的值,但是這樣效率很低


所以我們刪掉這些

我們創(chuàng)建一個(gè)Blueprint Thread safe Update Animation


獲取對象變量信息

將Deathpose提升為變量

進(jìn)入規(guī)則界面

設(shè)置Death里面的動(dòng)畫 使用Blend pose 加上 EDeathPose的枚舉名稱

前面的事件圖表也是必要的

165?Polishing Enemy Death完善敵人的死亡

Finishing Touches on Enemy Death敵人之死的收尾工作

1 去掉Enemy的膠囊體碰撞

在Die方法中添加

2 在擊中敵人后才顯示血條,死亡后不顯示

首先設(shè)置默認(rèn)不顯示血條


然后再GetHit方法中,設(shè)置true

死亡后把血條設(shè)置false

敵人死亡后,關(guān)閉SkeletaMesh的碰撞,避免死亡后尸體還是會(huì)被武器打中,繼續(xù)播放死亡動(dòng)畫


3 設(shè)置敵人在一段時(shí)間沒有被攻擊后,血條隱藏

他的思路是,聲明一個(gè)AActor變量,如果被攻擊,則將攻擊對象(玩家)復(fù)制給這個(gè)Actor

然后不停檢測敵人與Actor的距離,如果超過XXX則隱藏血條


166 小結(jié)


16_156~166Combat的評論 (共 條)

分享到微博請遵守國家法律
宾川县| 舒兰市| 思茅市| 太康县| 会泽县| 岳阳县| 遂平县| 德惠市| 民丰县| 旬邑县| 上蔡县| 淳化县| 宁晋县| 从江县| 旌德县| 德州市| 遵化市| 佛冈县| 海门市| 青海省| 安福县| 湘西| 岑巩县| 星子县| 玉龙| 章丘市| 固原市| 五河县| 靖宇县| 叙永县| 彩票| 高淳县| 平远县| 宜兰市| 郎溪县| 德格县| 平谷区| 通化县| 东丽区| 明水县| 广饶县|