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

虚幻4学习笔记

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

蓝图实现AI移动

导航网格体

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

按P键可以显示/隐藏区域范围

导航网格体边界体积 分为静态、动态

动态会实时计算导航网格内AI行进的路径 静态则不会

如何设置

人物移动

点选小白人蓝图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

连线

AI跟随样条线移动

新建Actor 添加样条组件 Spline 保存

拖入场景 后按Alt 创建路线


AI树实现移动

内容浏览器右键-人工智能 添加黑板和行为树

添加蓝图类 AI controller

AI controller 控制AI_BP

AI行为树 书写AI的行为逻辑

黑板为存储变量的地方

黑板添加变量 布尔 是否看见玩家 向量

AIcontroller 添加AIPerception AI感知组件

细节-AI感知-添加元素

添加AI实力配置

次要视觉半角 视觉锥形夹角

按归属检测 勾选检测中立方 (友方敌方需要C++底层完成)

点击目标感应更新时事件

添加 Cast to first personcharacter

stimulus引出中断AIStimulus

类型转换的作用 只有看到类型转换的对象时才会响应之后的逻辑

添加打印字符串

更改AI_BP中的AI控制设置为AIcontroller_new

打开行为树 根为起始的出发点

添加selector (选择器)sequence(序列)

右键sequence-添加装饰器 blackboard 对黑板中变量的进行判断

细节选择对应的变量

左边为键查询 已设置 右边为未设置

观察器终止设置为Both

AIcontroller_new

添加get blackbroad 添加黑板 引出 set value as bool 设置为布尔值 key name 引出 make...创建文字命名 输入黑板中变量的名字

时间开始运行 引出 run behavior tree 行为树运行 选择对应的行为树

新建 任务父类 重命名为 随机找点

打开随机找点

新增-重载函数 -时间接受执行AI

添加AI move to

添加get actor location

添加get random point in radius 获取可导航半径内的随机点 radius属性设为500(在导航网格原点500半径内的随机点)

添加Finish execute 完成执行 勾选success

行为树引出随机找点任务

引出wait

看见后寻找玩家

新建任务寻找玩家

新增-重载函数 -时间接受执行AI

添加AI move to

添加get player character 获取玩家角色

添加Finish execute 完成执行 勾选success

使AI一直朝向玩家

打开AI_BP 选中角色移动 细节搜索 角色移动(旋转设置) 将旋转朝向运动 勾选

类默认设置 勾选 使用控制器旋转 YAW

寻找玩家任务 添加设置焦距

随机找点任务 添加消除焦距

靠近玩家挥拳

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动画中添加该动画蓝图类

双击打开 AI_AimBP 选择动画图层 双击

引出SLOT插槽 类似于 标签 用于区分蒙太奇是哪一个

mesh 碰撞 将碰撞预设改为Custom 检测响应 Camera 设置为忽略

相关推荐
C语言不精1 小时前
合宙780E开发学习-Lua语法学习
学习·junit·lua
壹Y.7 小时前
非线性规划学习笔记
学习·数学建模
暗流者8 小时前
AAA 服务器与 RADIUS 协议笔记
运维·服务器·笔记
项目題供诗8 小时前
React学习(十二)
javascript·学习·react.js
艾莉丝努力练剑9 小时前
【C语言16天强化训练】从基础入门到进阶:Day 7
java·c语言·学习·算法
Ro Jace9 小时前
科研笔记:博士生手册
笔记
#include>9 小时前
【Golang】有关垃圾收集器的笔记
笔记·golang
自强的小白10 小时前
学习Java24天
java·学习
Qlittleboy10 小时前
手机、电脑屏幕的显示坏点检测和成像原理
经验分享·笔记
SalvoGao11 小时前
空转学习 | cell-level 与 spot-level的区别
人工智能·深度学习·学习