虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家

虚幻4学习笔记

  • 蓝图实现AI移动
    • 导航网格体
    • 人物移动
    • AI跟随样条线移动
  • AI树实现移动
  • 看见后寻找玩家
    • 靠近玩家挥拳

B站UP谌嘉诚课程:https://www.bilibili.com/video/BV164411Y732

蓝图实现AI移动

导航网格体

添加导航网格体边界体积 (AI可活动的区域)

按P键可以显示/隐藏区域范围
导航网格体边界体积 分为静态、动态
动态会实时计算导航网格内AI行进的路径 静态则不会
如何设置
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第1张图片

人物移动

点选小白人蓝图ctrl+w快速复制出AI_BP
新建正式开始AI文件夹 并将AI_BP放入
删除AI_BP所有节点 及摄像机

添加AI move to
属性说明
pawn 连接移动对象 self 本身移动
destination 目的地
target actor 目标跟踪
acceptance radius 接触半径方位内会停止
stop on overlap

添加get random point in radius 获取可导航半径内的随机点 radius属性设为500(在导航网格原点500半径内的随机点)
添加event begin play 事件开始运行
添加set timer by event 以事件设置定时器
添加random float in range 范围内随机浮点
添加get actor location
连线
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第2张图片

AI跟随样条线移动

新建Actor 添加样条组件 Spline 保存
拖入场景 后按Alt 创建路线


AI树实现移动

内容浏览器右键-人工智能 添加黑板和行为树
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第3张图片
添加蓝图类 AI controller
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第4张图片
AI controller 控制AI_BP
AI行为树 书写AI的行为逻辑
黑板为存储变量的地方
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第5张图片
黑板添加变量 布尔 是否看见玩家 向量
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第6张图片
AIcontroller 添加AIPerception AI感知组件
细节-AI感知-添加元素
添加AI实力配置
次要视觉半角 视觉锥形夹角
按归属检测 勾选检测中立方 (友方敌方需要C++底层完成)
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第7张图片
点击目标感应更新时事件
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第8张图片
添加 Cast to first personcharacter
stimulus引出中断AIStimulus
类型转换的作用 只有看到类型转换的对象时才会响应之后的逻辑
添加打印字符串
更改AI_BP中的AI控制设置为AIcontroller_new
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第9张图片
打开行为树 根为起始的出发点
添加selector (选择器)sequence(序列)

右键sequence-添加装饰器 blackboard 对黑板中变量的进行判断
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第10张图片
细节选择对应的变量
左边为键查询 已设置 右边为未设置
观察器终止设置为Both
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第11张图片

AIcontroller_new
添加get blackbroad 添加黑板 引出 set value as bool 设置为布尔值 key name 引出 make…创建文字命名 输入黑板中变量的名字
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第12张图片

时间开始运行 引出 run behavior tree 行为树运行 选择对应的行为树
新建 任务父类 重命名为 随机找点


打开随机找点
新增-重载函数 -时间接受执行AI
添加AI move to
添加get actor location
添加get random point in radius 获取可导航半径内的随机点 radius属性设为500(在导航网格原点500半径内的随机点)

虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第13张图片

添加Finish execute 完成执行 勾选success

行为树引出随机找点任务
引出wait
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第14张图片

看见后寻找玩家

新建任务寻找玩家
新增-重载函数 -时间接受执行AI
添加AI move to
添加get player character 获取玩家角色
添加Finish execute 完成执行 勾选success
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第15张图片

虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第16张图片
使AI一直朝向玩家
打开AI_BP 选中角色移动 细节搜索 角色移动(旋转设置) 将旋转朝向运动 勾选
类默认设置 勾选 使用控制器旋转 YAW
寻找玩家任务 添加设置焦距
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第17张图片
随机找点任务 添加消除焦距
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第18张图片

靠近玩家挥拳

AI_BP添加 Sphere cillsion 球体碰撞 设置球体半径 80
添加组件开始重叠时事件、组件结束重叠时事件
添加类型转换为第一人称
添加打拳动作
拖入Mesh 模型 引出 get anim instance获取动画实例 引出 montage play 蒙太奇播放 选择播放动画
蒙太奇的创建:动画序列 右键

蒙太奇播放 引出 set time by event 以时间设置定时器 添加计时器持续挥拳 inplay rate 改变播放速度
添加custom event loop

返回值是直接获取动画的长度,直接连到time效果如下:
当播放蒙太奇的同时,触发计时器,计时器开始倒计时,时间为蒙太奇的总时间
倒计时计时结束时。正好是动画播放完触发自定义事件,就会再一次播放动画。
触发计时器,勾选looping之后,就会如此反复播放动画

返回值引出Clear and Invalidate Timer by Handle 以句柄清楚定时器并使之无效
复制动画到正式开始AI 更名为AI_AimBP mesh动画中添加该动画蓝图类
虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第19张图片

双击打开 AI_AimBP 选择动画图层 双击
引出SLOT插槽 类似于 标签 用于区分蒙太奇是哪一个

虚幻4学习笔记(11) 蓝图实现AI移动、AI树实现移动、看见后寻找玩家_第20张图片
mesh 碰撞 将碰撞预设改为Custom 检测响应 Camera 设置为忽略

你可能感兴趣的:(ue4,学习,笔记)