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


    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 设置为忽略

  • 相关阅读:
    TypeScript必知三部曲(一)TypeScript编译方案以及IDE对TS的类型检查
    一、Audio-音频简介
    线性代数的本质(二)——线性变换与矩阵
    机器学习笔记 - 模式识别的应用场景之一简单车牌识别
    LeetCode 343. 整数拆分(动态规划)
    学习SpringMVC(1)
    【无标题】esp8266替代产品
    什么是方法?方法的定义
    STM32F4x_中断配置
    【leetcode】【剑指offer Ⅱ】028. 展平多级双向链表
  • 原文地址:https://blog.csdn.net/qq_27251475/article/details/127563099