当前课程知识点:虚幻引擎(UE4)技术基础 > 第十一章 游戏AI > 11.3 AI与玩家的攻击伤害 > 11.3 AI与玩家的攻击伤害
大家好
欢迎来到虚幻引擎技术基础课堂
我是主讲教师黄颖翠
现在我们将在虚幻引擎技术基础课程中
游戏AI章节
学习实现AI与玩家的攻击伤害
有了敌方和我方
那么一定有相互伤害
这样才有数值的流动
才有胜利失败
今天我们要学习两个功能操作
第一
实现敌人AI监听玩家位置
当在我方在敌人的可识别的有效范围下
自动追逐玩家角色
并对其进行攻击
第二
我方玩家也可以对敌人AI进行攻击并造成伤害
好
现在进入操作部分
现在我们来实际操作一下
如何实现这个两个逻辑
现在我们首先做敌人可以过来攻击我们
并且被攻击后
我们的健康值会下降
这样就相当于AI对我们进行了攻击伤害的效果
攻击我们这个问题
我们需要改一下我们的行为树
这里我们回顾一下
这里的行为是看到玩家后
向玩家方向移动
等待2秒
然后清除Player键值中玩家信息
这样就忘记了玩家
继续去巡逻
那么这只是等待了2秒
并没有给玩家造成伤害
我们需要新建一个任务
这样就在行为树的同一个目录下
创建了一个任务
名为DoAttack攻击任务
双击打开
在这个任务中
我们需要做什么
常用的方法
先添加好一个接受事件
一个退出功能
返回值为真
这里一定要设置为真
否则任务完成后
这条序列接收到假
后面的任务就可能不会执行
然后我们需要对玩家进行攻击
我们如何获取到玩家信息呢
我们需要定义一个变量作为目标
改名为Target
类型为黑板键值
因为这个任务里面的变量都是来自黑板的
所以这也是它与黑板的关系
这个Target需要外部传值进来
所以需要打开眼睛
可被外部访问
还有一个是伤害值Damage
类型为浮点数
打开眼睛
因为我们的健康值也是浮点数
方便用于计算
把这两个变量都拖出来
我们等下要用到它们
Target
因为我们需要从黑板中拿到玩家
所以是get blackboard value as actor
因为玩家是Actor
然后我们检查是否有玩家
IsValid
并且是有效的玩家
如果确实有玩家
则给它造成伤害
我们给一个泛型伤害ApplyDamage
这个伤害值是Damage
这个对谁的伤害
就是玩家actor
然后我们在行为树上添加这个攻击任务
然后在详细信息这里target这里选择玩家
伤害值为0.3
这样就会走到玩家身边进行伤害
我们运行一下
我们跑到AI前面
让他看到
然后他跟随我们过来
在我们面前暂停没动了
说明他在执行攻击
我们走开他也走开了
但是我们的血条并没有因为攻击而下降
说明我们这里还缺少处理玩家血条数据的逻辑
实际上是造成伤害了
但是我们主角没有接收到伤害
我们找到主角蓝图
打开
然后在空白处
来处理我们受到的伤害
AI给我造成伤害
我们这里应该需要一个事件来接受
找到AnyDamage事件
任意伤害事件
当敌人攻击我们
这个事件就会被触发
我们找到伤害值
给它做一个减法
伤害值减去受到的伤害Damage
然后用max限制不能小于0
然后最后值赋值给Health健康值变量
因为之前这个值已经和UI绑定了
所以当这个值被修改
UI也会更新
编译一下
我们运行试一下
血量下降了
这个攻击基本完成了
那么玩家如何攻击敌人AI呢
其实这在我们之前的课程中
攻击圆柱体中已经有了一个逻辑
我们先把场景中的两个圆柱体可以删除了
我们的敌人就是这个AI
我们找到圆柱体的蓝图中击中事件
我们复制一份
把它粘贴到敌人的蓝图中
但是因为这里有一些
原来蓝图的变量和变色
我们都不需要所以删除掉
我们调整一下
因为打两下就会死亡
太容易了
游戏感较差
我们给这个敌人也定一个血量Health
整数
值为3
我们这里首先在被攻击后
我们需要对血量先判断是否小于2
小于2
最大的整数也就是1
也就是只有一滴血
就进入这个分支
为真
那么被攻击一下也就是没有血了
判断死亡
如果不小于2
则为假
设置健康值Health
等于当前Health-1的结果
也就是扣一滴血
这里因为我们子弹的碰撞预制体是Pawn类型
敌人的碰撞预制体也是Pawn类型
但是关键我们子弹
对Pawn类型的物体是忽略碰撞的
因为这里是默认为了
让子弹不要打到玩家自己
我们这里就把子弹的碰撞
对Pawn这个类型还是改成有阻挡的
block
这样才能被击中
我们测试一下
AI是否是被击中3次后
然后死亡
好
任务完成
本小节的操作讲解已经完成
留给大家一个一个课后练习
请大家课后自己操作一下
做一个来回行走的人物AI
当他看到玩家
则会往玩家方向靠近
当靠近玩家
会对玩家进行攻击
攻击会伤害玩家血量
每0.2秒攻击扣1滴血
当玩家离开AI后
超过一定范围AI不会跟来
继续返回原来路径进行巡逻
同时玩家离开攻击后每1秒回一滴血
好
本节课内容就讲解完毕
感谢大家聆听
再见
-1.1 虚幻4引擎简介
--1.1 小节习题
-1.2 虚幻4引擎的安装及环境部署
--1.2 小节习题
-1.3 创建项目及试玩
--1.3 小节习题
-第一章 章节测试
-2.1 虚幻4编辑界面介绍01
--2.1 小节习题
-2.2 虚幻4编辑界面介绍02
--2.2 小节习题
-2.3 视口导航及基本操作
--2.3 小节习题
-2.4 导入资源、项目迁移和管理
--2.4 小节习题
-第二章 章节测试
-3.1 地形工具
--3.1 地形工具
--3.1 小节习题
-3.2 新建地形
--3.2 新建地形
--3.2 小节习题
-3.3 塑造地形
--3.3 塑造地形
--3.3 小节习题
-3.4 使用植被工具
--3.4 小节习题
-第三章 章节测试
-4.1 初识材质
--4.1 初识材质
--4.1 小节习题
-4.2 编辑基于物理材质
--4.2 小节习题
-4.3 使用贴图纹理创建材质
--4.3 小节习题
-第四章 章节测试
-5.1 大气照明和定向照明
--5.1 小节习题
-5.2 添加点光源
--5.2 小节习题
-5.3 添加聚光源
--5.3 小节习题
-5.4 光源质量和反射
--5.4 小节习题
-第五章 章节测试
-6.1 几何体及纹理贴导入
--6.1 小节习题
-6.2 素材整理和项目准备
--6.2 小节习题
-6.3 搭建流程
--6.3 搭建流程
--6.3 小节习题
-第六章 章节测试
-7.1 动画资源与编辑器
--7.1 小节习题
-7.2 混合空间
--7.2 混合空间
--7.2 小节习题
-7.3 动画窗口及编辑动画
--7.3 小节习题
-7.4 创建自定义角色
--7.4 小节习题
-第七章 章节测试
-8.1 创建粒子系统
--8.1 小节习题
-8.2 虚幻粒子基础功能介绍01
--8.2 小节习题
-8.3 虚幻粒子基础功能介绍02
--8.3 小节习题
-8.4 粒子特效的综合运用
--8.4 小节习题
-第八章 章节测试
-9.1 初识蓝图
--9.1 初识蓝图
--9.1 小节习题
-9.2 蓝图类型
--9.2 蓝图类型
--9.2 小节习题
-9.3 蓝图通信
--9.3 蓝图通信
--9.3 小节习题
-9.4 创建蓝图
--9.4 创建蓝图
--9.4 小节习题
-第九章 章节测试
-10.1 击中事件
--10.1 小节习题
-10.2 实现物体来回移动
--10.2 小节习题
-10.3 Input输入与玩家快捷键交互
--10.3 小节习题
-10.4 用户界面和HUD
--10.4 小节习题
-10.5 创建游戏约束
--10.5 小节习题
-10.6 游戏结束与重玩功能
--10.6 小节习题
-第十章 章节测试
-11.1 行为决策的AI
--11.1 小节习题
-11.2 AI监听玩家行为
--11.2 小节习题
-11.3 AI与玩家的攻击伤害
--11.3 小节习题
-11.4 AI生成点与随机巡逻
--11.4 小节习题
-11.5 优化游戏体验
--11.5 小节习题
-11.6 渲染及代码优化
--11.6 小节习题
-第十一章 章节测试
-12.1 音频基础
--12.1 小节习题
-12.2 音频混成器
--12.2 小节习题
-12.3 声音特效
--12.3 小节习题
-第十二章 章节测试