第七章 Ranged Enemy
2-Ranged Enemy Starting Weapon
- 制作新敌人的流程准备
- 新敌人的武器
- 起始的状态数据
- 自己的战斗能力
- 投射能力
- 自己的行为树
- 创建角色,添加武器,添加数据,就是继承之前的基类敌人的
- 运行结果
3-Glacer Starting Stats
- 看看就行,就是复制曲线表格更改数据
4-Glacer Hit React
- 关于材质,看看就行
5-Ranged Behavior Tree(这节课解决了翻滚运动扭曲对墙会有bug的问题)
- 因为当对着墙进行翻滚时,检测点无效,那么冲量就为零矢量,所以对着墙翻滚的时候,可能会滚向原点,解决方法加个判断,没有检测点时就移除运动扭曲就行
- 后面就是一些创建行为树的设置行为树到这个远程敌人上的操作,看看就行
6-Find Shooting Position
- 新建一个EQS用来让敌人走到理想的射击地点,这节课没多少内容,看看就差不多了
7-Projectile Ability(射击能力)
- 流程
- 创建这个能力
- 添加一个射击的类,这个类可以为后续角色拥有了远程攻击做准备
- 损伤逻辑
- 特效处理
- 创建播放攻击能力
- 给予能力
- 行为树逻辑
8-Projectile Class
- 这节课来创建实际的射击的类
- 添加Niagara模块
- 创建蓝图
9-Spawning Projectile
- 添加一个标签用来标明蒙太奇中何时发生子弹
- 发射子弹
- 运行结果
10-On Projectile Hit
- 在AWarriorProjectileBase类中继续添加逻辑,给碰撞盒子添加两个动态委托函数进行处理碰撞
11-Handle Projectile Hit
- 继续编写碰撞逻辑
- 创建一个在蓝图中实现的函数,用来播放击中声音
- 在基类蓝图中进行编写播放逻辑
- 在子类蓝图上添加声音与特效
12-Projectile Spec Handle(发射的子弹应用伤害)
- 在我们子弹击中目标时就可以携带GE返回Handle,然后将GE应用到目标上,以便拉回到我们的投射能力上,在生成射弾前要分配GE的效果,这也是指定射弾应造成多少伤害的地方
- 继续编写AWarriorProjectileBase中的逻辑,首先创建子弹的GE句柄与应用伤害的函数
- 在帮助函数库中新建将GE应用到目标的辅助函数使用
- 射弾应用伤害的函数逻辑
- 既然在应用伤害的函数中添加了GameplayEventData传参,那这里就要加上
- 运行结果,我们生成子弹的这就需要传入一个应用伤害的GE
13-Make Projectile Spec Handle
- 在本次讲座中,将构造此应用伤害的GE手柄以及如何指定射弹可以造成的伤害量。
- 在远程敌人的曲线表格里面添加远程攻击的伤害数据
- 添加伤害
14-Projectile Sound FX
- 这集添加音效看看就行
15-Glacer Melee Ability(当玩家靠近的近战能力)
- 制作一个近战的蒙太奇,复制之前近战AI的蒙太奇进行更改就行
- 也是一样复制之前近战能力改一下即可
- 添加能力
- 行为树测试一下
16-Unblockble Attack(设置这个近战能力不可被格挡)
- 这节课解决远程敌人的近战攻击是不能被格挡的
- 首先添加用来说明这个状态的标签
- 之前在UEnemyCombatComponent战斗组件中留有逻辑,不可阻挡的攻击,现在继续补齐
- 在进行攻击时就会尝试激活这个标签
- 在敌人的近战攻击基类能力中进行判断有没有不可被阻挡的标签就行了,有就播放一个GC正常执行攻击逻辑,没有也正常执行攻击逻辑
- 然后新建一个GC用来播放远程AI近战攻击的提示,这里有个GetActorEyesViewPoint的节点返回Actor的视点
- 加个旋转更好看一点
- 运行结果
17-Combat Test Map
- 看看就行