18_180~189EnemyAttacks
180?Using Inheritance使用繼承
Creating a Base Character Class創(chuàng)建一個基礎Character類
創(chuàng)建一個BaseCharacter類,EchoCharacter和Enemy類繼承這個類,將兩個類中功能相同的方法放在父類
因為Character類和Enemy類中 都會用到攻擊方法
所以可以將攻擊方法獨立出來,讓Character和Enemy來繼承這方法
181?Enemy Base Blueprint敵人基礎藍圖
Creating Different Enemy Blueprints創(chuàng)建不同的敵人藍圖
將最早創(chuàng)建的Enemy ?BP_Enemy 作為敵人的藍圖基類,
我們使用由這藍圖派生的子類
后續(xù)操作我們都可以操作子類
給敵人添加一個盾牌
使用藍圖的構造事件,將盾牌綁定在指定的骨骼插槽上

182?Enemy Weapon敵人的武器
Spawning a Weapon for the Enemy為敵人生成一件武器


183?Enemy Attack Montage敵人的攻擊蒙太奇
Attacking When the Enemy is Close敵人靠近時的攻擊



184?Enemy Attack Timer敵方攻擊計時器
Waiting Between Attacks攻擊之間的等待

將攻擊方法加入了計時器

給ABP動畫中添加了敵人狀態(tài)的設置

使用狀態(tài)設置給動畫過渡條件

添加了死亡細節(jié)

185?Refactoring Montage Functions重構蒙太奇函數(shù)
A better way to choose Montage Sections選擇蒙太奇部分的更好方法
將原來PlayeAttackMontage方法拆分成了兩個方法,
提升到了父類
并且使用FName數(shù)組來在藍圖中獲得攻擊動畫的通知名稱


修改了EDeathPose 枚舉的聲明方式,去掉了Class 和unit8

DeathPose的聲明方式也變了

這樣避免了編輯器的警告內(nèi)容
TEnumAsByte is not intended for use with enum classes - please derive your enum class from uint8 instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile
TEnumAsByte不打算用于枚舉類 - 請從uint8派生你的枚舉類。在升級到下一個版本之前,請將你的代碼更新到新的API,否則你的項目將不再被編譯。
重寫了個PlayDeathPosMontage
父類


在Die方法中,播放動畫就只需要一句話

187?Finishing Refactoring完成重構
Cleaning Up Our Clasees
這一段重構建議仔細看視頻,結合老師在Github上的項目代碼
188?Hitting the Character打擊角色
Enabling Weapon Overlaps for the Enemy啟用敵人的武器重疊
邏輯與角色攻擊相同,因此將攻擊相關的方法放置在了父類中