【AI】p54-p58导航网络、蓝图和AI树实现AI随机移动和跟随移动、靠近玩家挥拳、AI跟随样条线移动思路

p54-p58导航网络、蓝图和AI树实现AI随机移动和跟随移动、靠近玩家挥拳、AI跟随样条线移动思路

  • p54导航网格
  • p55蓝图实现AI随机移动和跟随移动
    • AI Move To(AI进行移动)
    • Get Random Pointln Navigable Radius(获取可导航半径内的随机点)
    • Set Timer by Event(以事件设置定时器)
    • Random Float in Range(范围内随机浮点)
  • p56AI树实现AI随机移动和跟随移动
    • 目标感知跟新时(AIPerception)(On Target Perception Updated(AIPerception))
    • 中断AISimulus(Break AISimulus)
    • AI行为树
  • p57靠近玩家挥拳
    • 蒙太奇
  • p58AI跟随样条线移动思路

p54导航网格

在体积找到“导航网格体边界体积”拖拽到视图中出现一个线框和绿色覆盖,线框覆盖部分属于AI可以行动范围
快捷键“P”可以显示消失的查看绿色覆盖

绿色导航网格分为静态和动态
静态代表游戏运行之前就已经计算好了AI可以运动的范围
动态代表游戏运行时实时的计算AI可以运动的范围
请添加图片描述

p55蓝图实现AI随机移动和跟随移动

ctrl+w复制ThirdPersonCharacter,创建的新蓝图类重命名为AI
新建文件夹AI,把蓝图类AI放到新文件夹AI中
打开蓝图类AI,删掉蓝图、遍历、摄像机、其他事件图表

AI Move To(AI进行移动)

作用:让AI进行移动
请添加图片描述
Pawn:连接(使其移动的)对象(一般都连接self(获得一个对自己的引用))
Destination:(将要移动到的)目标
Target Actor:跟踪(某个角色)移动(如果连接的是玩家,就会一直跟着玩家跑)(和Destination选择一个使用,区别为Target Actor传入的是演员,Destination传入的是向量)
Acceptance Radius:走到目标的多少范围
Stop on Overlap:大勾后Acceptance Radius变成了走到目标的多少范围停止
成功时:AI到达目的地成功时触发
失败时:AI到达目的地失败时触发

创建新的自定义事件“AI移动”连接输入执行引脚
Pawn连接self
Destination拉出引线搜索Get RandomPointln Navigable Radius(获取可导航半径内的随机点)

Get Random Pointln Navigable Radius(获取可导航半径内的随机点)

请添加图片描述
Origin:(需要传入一个圆心)在此圆心范围内找到一个点
Radius:半径范围数值

Origin拉出引线搜索“获取Actor位置”
创建事件开始运行,拉出引线连接事件AI移动
蓝图如下
请添加图片描述
现在AI会在以自身为半径的Radius范围内随机选一个点移动,之后就会停下,当前目的需要AI在移动到一个点后再次移动

Set Timer by Event(以事件设置定时器)

Time:可以设置时间
Looping:循环(打勾即会循环)

Random Float in Range(范围内随机浮点)

如图连接蓝图
请添加图片描述
如此,每过5到7秒触发一次时间AI移动,循环(如果AI还没到目的地时间就到了,AI会选择向新的点走去)

p56AI树实现AI随机移动和跟随移动

右键内容浏览器-》人工智能-》黑板
右键内容浏览器-》人工智能-》行为树
右键内容浏览器-》蓝图类-》搜索AIController(AI控制器)(这是所有AI控制器的父类)
请添加图片描述

AI_BP可以看作是傀儡,AI_BT控制AI_BP,行为树控制AI的行为,黑板存储变量

在黑板新建两个变量,一个bool变量重命名为“是否看到玩家?”,另一个是向量重命名为“要去的坐标”
打开AIController,在组件面板添加“AI感知组件”(作用是让AI感知周围的敌人友军等)
请添加图片描述
点击AIPerception(AI感知组件),在细节面板找到“AI感知”点击“感官配置”右侧的加号
请添加图片描述
有许多配置,选择视力配置
实力配置可以修改如下参数
请添加图片描述
次要视觉半角角度:AI的视力范围
请添加图片描述
按归属检测中的中立方要打勾,这样才可以检测到玩家(如果想要更改敌友等需要更改c++代码)

目标感知跟新时(AIPerception)(On Target Perception Updated(AIPerception))

请添加图片描述
Actor:AI看到(因为之前选的视力配置)的”Pawn和角色蓝图类“会传到此处
Stimulus:刺激物

Actor拉出引线搜索”类型转换为ThirdPersonCharacter"(类型转换的作用是只有看到小白人才会响应之后的逻辑)
Stimulus拉出引线搜索“中断AISimulus”

中断AISimulus(Break AISimulus)

请添加图片描述
Successfully Sensed:是否成功感测到了小白人
如下图连接蓝图,进行测试
请添加图片描述
想要进行测试还需要打开AI_BP,在细节面板-》Pawn-》AI控制器类-》选择AI_BT(刚才的AIContoller)
请添加图片描述

编译保存
如此在游戏中出现在AI视野范围内左上角会出现true,走出AI视野会在左上角出现false

AI行为树

请添加图片描述
从根拉出的Composites:复合节点(用于分支的规则)
Selecter:选择,几选一……
Sequence:序列,按顺序进行

因为目的是AI看到玩家冲到玩家身边挥拳,所以先连接Selector根据有没有看到玩家而判断,接下来连接Sequence(如果看到了玩家依次进行什么动作)
如下图连接
请添加图片描述
在左侧Sequence右键添加装饰器,选择黑板Blackboard(调用了黑办里的变量)
请添加图片描述
在右侧细节面板选择要调用的变量“是否看到玩家?”
请添加图片描述
当黑板太多时,点击空白处,在细节面板可以选择使用的黑板
请添加图片描述
右侧Sequence也添加装饰器黑板,在细节面板-》黑板-》键查询-》未设置,黑板键选择变量“是否看到玩家?”
(选择未设置就代表未看到,已设置就是看到)
请添加图片描述

现在设置优先级(使其优先级相等)点击Sequence的黑板,在细节面板-》流控制-》观察器终止-》Both
请添加图片描述

两个都如此设置,现在两个在同一优先级
请添加图片描述
在AI_BT的事件图表右键搜索“获取黑板”拉出引线搜索“将值设为布尔”,此时“将值设为布尔”出现Bool Value节点,连接中断AIStimulus蓝图的Successfully Sensed节点

从Key Name拉出引线搜索“创建文字命名”,在“创建文字命名”写上“是否看到玩家?”

如此就可以实时的传递bool值“是否看到玩家?”了

现在行为树的规则有了,但是还没有内容,接下来添加内容
点击左上角新建任务,选择BTTask_BlueprintBase(如果没下拉,选择即可)
请添加图片描述
在新建的任务(蓝图)在左侧我的蓝图,点击函数右侧的重载“事件接收执行AI”
请添加图片描述
删除之前创建的蓝图实现随机移动的蓝图

如图在新建的任务如下图链接
请添加图片描述
Comtrolled Pawn连接AI Move To的Pawn(这一步是连接AI控制器的对象)

AI Move To的成功时连接”完成执行“(Finish Execute)(这一步是让AI在执行完成后告诉系统到底是成功还是失败了,才能进行下一个任务)(不要忘记给完成执行的bool打勾)
(必须在完成任务时让编译器知道,不然就不会做任何事了)
请添加图片描述

这是随机找点的逻辑,逻辑写完该让行为树调用了
在右侧行为树”没看到玩家时“拉出搜索”随机找点_BP“(刚才新建的任务的重命名)
请添加图片描述
再添加一个Wait。设置为5秒,这样就会,找个点,待5秒,再找个点,待5秒,如此循环

现在行为树还没有和AIController产生联系
在AIController的蓝图中创建”事件开始运行“,连接”运行行为树“
在”运行行为树“的BTAsset选择对象行为树”AI_BT“
请添加图片描述
在AI_Tree新创建一个任务”寻找玩家_BP“,重载”接收执行AI“如图连接
请添加图片描述
现在AI会一阵跟着玩家,但是很容易视野丢失玩家就会跑开
解决办法:让AI看到玩家后一直朝向玩家
打开AI小白人蓝图,在组件选中角色移动,在细节面板搜索朝向,取消勾选
请添加图片描述
请添加图片描述
选中类默认值,在细节面板找到Pawn-》使用控制器旋转Yaw
请添加图片描述
请添加图片描述
打开寻找玩家_BP,搜索”设置焦距“目标连接Owner Controller,New Focus连接Return Value
请添加图片描述
控制AI旋转方向的是设置焦距的New Focus,New Focus连接获取玩家角色,就会一直看向玩家角色方向

使用焦距后AI会一直朝向玩家,会在还没看到玩家的时候斜着走等等
所以需要在没看到玩家时关掉设置焦距

在随机找点_BP中创建清除焦距蓝图,如下图连接
请添加图片描述

p57靠近玩家挥拳

给AI添加一个碰撞盒子(Sphere Collision)调整大小
点击Sphere,在细节面板点击两个蓝图(组件开始重叠时(Sphere)、组件结束重叠时(Sphere))的加号创建蓝图

蒙太奇

蒙太奇就是多个动画或片段剪辑组合在一起,通过程序驱动播放某一个片段

点击组件面板的“网格体(CharacterMeshO)”拖出,拉出引线搜索“获取动画实例(Get Anim Instance)”,拉出引线搜索“蒙太奇播放(Montage Play)”
(蒙太奇播放的目标是动画实例,所以先创建前面两个蓝图。因为要让“网格体(CharacterMeshO)”里的模型播放动画,所以选用“网格体(CharacterMeshO)”来连接)

在这里插入图片描述
为蒙太奇播放添加一个动画

可以通过调节In Play Rate而更改动画播放时间

返回值是直接获取动画的长度,练到time效果如下:
当播放蒙太奇的同时,触发计时器,计时器开始倒计时,时间为蒙太奇的总时间,倒计时结束时,正好是动画播放完,触发自定义事件,就会再一次播放动画,触发计时器,勾选looping之后,就会如此重复播放动画
请添加图片描述
以事件设置定时器的Return Value拉出引线搜索“Clear and Invalidate Timer by Handle(以句柄清除定时器并使之无效)”

在这里插入图片描述
按上述路径打开,复制第一个,在AI文件夹复制并改名“AI_AnimBP”(以防和玩家的混掉)

打开AI_BP蓝图,点击组件面板的“网格体(charaMeshO)(继承)”在细节面板的动画-》动画类。选择刚才命名的“AI_AnimBP”
在这里插入图片描述
双击打开“AI_AnimBP”
双击左侧动画图表的AnimGraph
在这里插入图片描述
两个连线之间添加一个插槽“DefaultSlot”
在这里插入图片描述
插槽的作用相当于标签(分类),为了更好的识别

完整蓝图如下
在这里插入图片描述
现在拳头靠近玩家摄像机时会被阻挡,所以进行如下操作
打开蓝图AI_BP,选中网格体-》在细节面板-》碰撞-》碰撞预设改为Custom-》Camera勾选忽略
在这里插入图片描述

p58AI跟随样条线移动思路

如图,随着点走
在这里插入图片描述
新建一个Actor蓝图类
在添加组件添加“样条组件”
拉出蓝图到视口会出现下图
在这里插入图片描述
选中左侧点,按住Alt键拉动可以快速创建一个点
在这里插入图片描述

打开事件树,在左上角新建任务,新建
拉出时间接收执行AI,连接获取类的所有Actor(Actor Class选中刚才创建的蓝图)
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/36001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时序预测 | MATLAB实现基于LSTM长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于LSTM长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于LSTM长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 Matlab实现LSTM长短期记忆神经…

识别和应对内存抖动

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、案例分析3.1 使用memory-profiler3.2 使用 cp…

磁粉制动器离合器收放卷应用介绍

张力控制系统的开环闭环应用介绍,请查看下面文章链接: PLC张力控制(开环闭环算法分析)_张力控制plc程序实例_RXXW_Dor的博客-CSDN博客里工业控制张力控制无处不在,也衍生出很多张力控制专用控制器,磁粉制动器等,本篇博客主要讨论PLC的张力控制相关应用和算法,关于绕线…

APP外包开发的iOS开发语言

学习iOS开发需要掌握Swift编程语言和相关的开发工具、框架和技术。而学习iOS开发需要时间和耐心,尤其是对于初学者。通过坚持不懈的努力,您可以逐步掌握iOS开发技能,构建出功能丰富、优质的移动应用。今天和大家分享学习iOS开发的一些建议方法…

【数据结构系列】链表

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

解决hbase节点已下线,但在status中显示为dead问题

工作中需要下线4台hbase小节点,下线完成后使用status 命令查看,有一台为dead状态: 使用status detailed 查看,发现“hd-03"这台节点是dead。 检查各节点配置文件无误,并使用 /opt/hbase/bin/hbase-daemon.sh restart master 重启两个…

less基本使用

1 less中的变量 //对值进行声明 link-color: #ccc//定义变量名称 .{sleName} {}bg: background-color; //定义属性名称 .container {{bg}: red; }2 继承(复用重复样式) //继承必须位于选择器最后 //继承选择器名不能为变量 .a:hover:extend(.b) {}.a {…

浅谈人工智能技术与物联网结合带来的好处

物联网是指通过互联网和各种技术将设备进行连接,实时采集数据、交互信息的网络,对设备实现智能化自动化感知、识别和控制,给人们带来便利。 人工智能是计算机科学的一个分支,旨在研究和开发能够模拟人类智能的技术和方法。人工智能…

后院失火、持续亏损!Mobileye半年报「不回避」竞争压力

"客户在2023年上半年非常谨慎,导致增长率低于正常水平,但我们已经看到下半年回暖趋势,预计下半年交付将比去年同期增长16%,远高于上半年。"这是Mobileye在近日公司半年报发布会上的预判。 公开数据显示,今年…

2023网络安全常用工具汇总(附学习资料+工具安装包)

几十年来,攻击方、白帽和安全从业者的工具不断演进,成为网络安全长河中最具技术特色的灯塔,并在一定程度上左右着网络安全产业发展和演进的方向,成为不可或缺的关键要素之一。 话不多说,网络安全10款常用工具如下 1、…

Opencv4基于C++基础入门笔记:图像 颜色 事件响应 图形 视频 直方图

效果图◕‿◕✌✌✌:opencv人脸识别效果图(请叫我真爱粉) 先看一下效果图勾起你的兴趣! 文章目录: 一:环境配置搭建 二:图像 1.图像读取与显示 main.cpp 运行结果 2.图像色彩空间转换 2.1 换色彩 test.h …

感受RFID服装门店系统的魅力

嘿,亲爱的时尚追随者们!今天小编要给你们带来一股时尚新风潮,让你们感受一下什么叫做“RFID服装门店系统”,这个超酷的东西! 别着急,先别翻白眼,小编来解释一下RFID是什么玩意儿。它是射频识别…

云计算——存储虚拟化功能

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前期回顾 前言 一.存储虚拟化功能 1.精简磁盘和空间回收 2.快照 (1&a…

面试热题(反转字符串中的单词)

给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格…

JVM——栈和堆概述,以及有什么区别?

方法栈 方法栈并不是某一个 JVM 的内存空间,而是我们描述方法被调用过程的一个逻辑概念。 在同一个线程内,T1()调用T2(): T1()先开始,T2()后开始;T2()先结束,T1()后结束。 堆和栈概述 从英文单词角度来…

Maven介绍,部署在eclipse中

目录 一.Maven介绍 1,什么是maven? 2. 为什么maven会在企业中大量使用? 3.没有使用maven的前后区别? 4.maven在Java开发中的实际效果图 二.maven部署在eclipse中 1.下载maven在其官方网址下载(当然实际下载也要根据个人的…

服务器安装Tomcat

下载Tomcat 下载地址在这: Tomcat官网 下载完成以后把压缩包上传到服务器中(我传到了www/java),进行解压(解压到),如果没有进行指定解压到哪里,默认是到root文件夹中 tar -zxvf /www/java/apache-tomcat-9.0.103.tar.…

HCIP学习--BGP3

目录 前置内容 BGP下一跳的修改问题 BGP的属性 配置 PrefVal权重属性 负载分担 LocPrf 负载分担 NextHop AS-PATH Ogn 配置 MED 配置 BGP选路规则 BGP的社团属性 配置及解释 前置内容 HCIP学习--BGP1_板栗妖怪的博客-CSDN博客 HCIP学习--BGP2_板栗妖怪的博客…

00 - 环境配置

查看所有文章链接:(更新中)GIT常用场景- 目录 文章目录 1. 环境说明2. 安装配置2.1 配置user信息2.2 config的三个作用域 3. 建git仓库3.1 把已有的项目代码纳入git管理3.2 新建的项目直接用git管理3.3 配置local的user和email3.4 优先级&…

Redis_缓存1_缓存类型

14.redis缓存 14.1简介 穿透型缓存: 缓存与后端数据交互在一起,对服务端的调用隐藏细节。如果从缓存中可以读到数据,就直接返回,如果读不到,就到数据库中去读取,从数据库中读到数据,也是先更…