高级AI记录笔记(二)

学习位置

  • B站位置:红豆丨泥 UE AI 教程
  • 原作者Youtube位置:https://youtu.be/-t3PbGRazKg?si=RVoaBr4476k88gct
  • 素材自备

提前将动画素材准备好

  • 枪的武器插槽位置调整好
    在这里插入图片描述
  • 动画蓝图基本没什么变化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

准备武器

  • 在AI的接口蓝图中添加两个函数一个是装备武器一个是卸载武器
    在这里插入图片描述
  • 替换之前的事件
    在这里插入图片描述
  • 将之前的两个事件分发器换一下名字
    在这里插入图片描述
    在这里插入图片描述
  • 行为树的任务也是
    在这里插入图片描述
  • 注意之前装备斧头与卸载斧头的任务需要更新
    在这里插入图片描述
    在这里插入图片描述
  • 这两个名字也改一下
    在这里插入图片描述
  • 将之前的斧头蓝图作为基类,派生出两把武器
    在这里插入图片描述
  • 将之前的拿斧头的蓝图AI作为基类派生出两个敌人一个拿枪的一个拿斧头的
    在这里插入图片描述
  • 在AI接口中创建一个攻击函数,替换掉之前的攻击事件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 注意之前改错了名字,所以注意行为树的逻辑变化
    在这里插入图片描述

行为树嵌套子树

  • 将一下通用被动的行为可以封装成一个行为树,然后在总的行为树中去调用这个子行为树
  • 例如这个侦察点巡逻,可以封装为一个行为树
    在这里插入图片描述
  • 新建一个行为树用来单独走这个再侦察点巡逻任务
    在这里插入图片描述
    在这里插入图片描述
  • 绕样条线巡逻这段行为也可以封装为一个行为树
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

区分近战与远程行为树

复制基类行为树,作为近战AI行为树

  • 近战行为树不做任何改变
    在这里插入图片描述
  • 修改基类AI行为树
    在这里插入图片描述
  • 复制这个基类行为树,作为远程AI的行为树
    在这里插入图片描述

通过敌人类型运行不同行为树

  • 在敌人基类里面添加一个行为树变量
    在这里插入图片描述
  • 分别在远程AI与近战AI的行为树变量设置相应的行为树
    在这里插入图片描述
    在这里插入图片描述
  • AI控制器中进行分区不同类型AI用不同类型行为树
    在这里插入图片描述
  • 运行结果,确实区分开了行为树
    在这里插入图片描述

实现远程AI受击后会躲起来

  • AI受到攻击后会躲避玩家视线进行恢复,然后再次出现攻击玩家

设置远程AI基本属性

  • 实现一下远程AI的设置移动速度接口,相比于近战攻击AI,远程AI移动速度快一点
    在这里插入图片描述
  • 设置一下远程AI的攻击范围
    在这里插入图片描述

AI的攻击行为与EQS查询

  • 新建一个EQS查询,使用查询参数这样就可以将这个网格范围与我们的黑板老板键进行关联
    在这里插入图片描述
  • 添加一个路径测试去除掉不能达到的点
    在这里插入图片描述
  • 添加一个追踪测试,过滤到在玩家视线中看不到的点
    在这里插入图片描述
  • 添加一个距离测试以玩家为目标,这样就看到距离玩家最远的点了
    在这里插入图片描述
  • 在添加一个距离测试,过滤掉AI可以移动300的范围内的点,这样就减少AI的这个范围一直移动
    在这里插入图片描述
  • 场景中的测试结果,这里是网格生成没有用关联值才能看得到的,记得不测试的时候就换回查询参数
    在这里插入图片描述
    在这里插入图片描述
  • 行为树逻辑,这里与网格范围变量关联的是我们的攻击范围,也就是说这个EQS的会跟据我们的攻击范围去生成EQS范围大小
    在这里插入图片描述
    在这里插入图片描述
  • 记得连线玩家进行测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 注意别忘记给追踪测试加一个高度,这样就可以让这个测试看到的高度来进行查询
    在这里插入图片描述
  • 重写一下远程AI的攻击接口
    在这里插入图片描述

离开AI视线进行查找玩家

  • 添加一个装饰器进行检查当前玩家是否在AI的视线中
    在这里插入图片描述
  • 远程AI行为树逻辑,当我们不在AI视线里的时候,AI会去寻找攻击我们的最佳点,观察器中止为Both,只当AI完全看不到玩家的时候才会去执行旁边的MoveToLineOfSight
    在这里插入图片描述
    在这里插入图片描述

添加健康系统

  • 新建三个变量,设置相应的默认值
    在这里插入图片描述
  • 在玩家蓝图给伤害感官通知那进行伤害传递
    在这里插入图片描述
  • 基类敌人中应用伤害
    在这里插入图片描述
  • 新建两个接口涌来获取最大血量与当前血量
    在这里插入图片描述
  • 实现接口
    在这里插入图片描述
    在这里插入图片描述

攻击AI,AI知道躲避进行回血

  • 添加一个装饰器用来判断当前血量是否小于一个阈值
    在这里插入图片描述
  • 添加一个回复血量的接口函数
    在这里插入图片描述
  • 在基类敌人中去实现这个函数接口
    在这里插入图片描述
  • 新建一个任务用来恢复血量
    在这里插入图片描述
  • 行为树逻辑
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

小型kv数据库rocksdb配合grpc实现网络访问

rocksdb相对来说比leveldb多了许多特性,但是对使用来说比levedb高了一大截。 rocksdb的代码在编译时需要有rocksdb服务端环境才能编译,windows上需要先下载vs2019编译dll后才能开始写代码。 这里不考虑windows了,直接使用docker环境来用 一…

汽车共享管理:SpringBoot技术的最佳实践

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了共享汽车管理系统的开发全过程。通过分析共享汽车管理系统管理的不足,创建了一个计算机管理共享汽车管理系统的方案。文章介绍了共享汽车管理系统的系…

从0开始学PHP面向对象内容之(常用魔术方法)

一、什么是魔术方法 PHP中的魔术方法是以__两个下划线开头的方法,这些方法提供了一种机制,可以在类的生命周期中拦截某些事件或者进行一些操作 二、魔术方法有哪些 一、__construct()&&__destruct() __construct()构造函数,__des…

蔚来Android面试题及参考答案(3万字长文)

说一说 MVP 架构,MVVM 架构 MVP(Model - View - Presenter)架构: Model:它主要负责数据的获取和存储,例如从数据库、网络或者其他数据源获取数据。模型层是独立于视图层的,它不关心数据是如何展示的,只专注于数据本身的操作。比如一个新闻类应用,模型层就负责从服务器…

PNG图片批量压缩exe工具+功能纯净+不改变原始尺寸

小编最近有一篇png图片要批量压缩,大小都在5MB之上,在网上找了半天要么就是有广告,要么就是有毒,要么就是功能复杂,整的我心烦意乱。 于是我自己用python写了一个纯净工具,只能压缩png图片,没任…

【论文阅读】小样本学习相关研究

相关文献 Generalizing from a Few Examples: A Survey on Few-Shot Learning Author: YAQING WANG、QUANMING YAO、JAMES T. KWOK、LIONEL M. NIAbstract: Artificial intelligence succeeds in data-intensive applications, but it lacks the ability of learning from a …

【架构论文-1】面向服务架构(SOA)

【摘要】 本文以我参加公司的“生产线数字孪生”项目为例,论述了“面向服务架构设计及其应用”。该项目的目标是构建某车企的数字孪生平台,在虚拟场景中能够仿真还原真实产线的动作和节拍,实现虚实联动,从而提前规避问题&#xff…

常见的排序算法及分类对比

虽然在竞赛和编程语言中用到的排序算法主要是时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn) 的高效算法,但作为算法学习,我们要从简单到复杂,认识常见的排序算法,并理解其算法思想。本文列出几乎所有的排序算法并进行分类对比。 排序算法总表 以下是一个对比表格…

Kafka-broker处理producer请求-leader篇

一、上下文 《Kafka-生产者源码分析》博客中我们了解了Kafka是如何生产数据的,《Kafka-broker粗粒度启动流程》博客中我们了解了KafkaApis中有各种api和对应处理逻辑,其中PRODUCE请求对应了处理produce请求的逻辑,下面我们跟着源码来看下处理…

mysql占用内存过大问题排查

如果 MySQL 占用内存过高,可以按照以下步骤进行排查: 一、检查 MySQL 配置参数 查看 innodb_buffer_pool_size: 这个参数决定了 InnoDB 存储引擎缓冲池的大小,它会占用大量内存。如果设置得过大,可能导致内存占用过高…

pulsar bookies 磁盘资源无法释放问题排查

查询bookie节点状态 bin/bookkeeper shell bookieinfo 报错如下: Error during flush Nov 11 16:03:05 pulsar-192-0-20-118 pulsar[10500]: java.io.IOException: java.lang.RuntimeException: java.io.FileNotFoundException: /data/bookkeeper/ledgers/current/6…

4-1-2.C# 数据容器 - List 扩展(List 注意事项、List 存储对象的特性、List 与数组的转换)

List 概述 List<T> 存储的元素是有序的 List<T> 存储的元素是可重复的 List<T> 支持泛型&#xff0c;可以指定存储的元素的类型 List<T> 支持索引&#xff0c;可以通过索引获取或修改元素 List<T> 支持动态大小&#xff08;有扩容机制&#…

代码随想录算法训练营第四十三天|Day43 动态规划

300.最长递增子序列 视频讲解&#xff1a;https://www.bilibili.com/video/BV1ng411J7xP https://programmercarl.com/0300.%E6%9C%80%E9%95%BF%E4%B8%8A%E5%8D%87%E5%AD%90%E5%BA%8F%E5%88%97.html 思路 #define max(a, b) ((a) > (b) ? (a) : (b)) int lengthOfLIS(int*…

Axure网络短剧APP端原型图,竖屏微剧视频模版40页

作品概况 页面数量&#xff1a;共 40 页 使用软件&#xff1a;Axure RP 9 及以上&#xff0c;非软件无源码 适用领域&#xff1a;短剧、微短剧、竖屏视频 作品特色 本作品为网络短剧APP的Axure原型设计图&#xff0c;定位属于免费短剧软件&#xff0c;类似红果短剧、河马剧场…

【LeetCode】【算法】560. 和为 K 的子数组

LeetCode 560. 和为 K 的子数组 题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 思路 思路&#xff1a;前缀和 定义数组preSum[nums.length1]&#xff0c;在里面计算nums…

【Spring】本地事务

一、事务的基本性质 原子性&#xff1a;一系列操作整体不可拆分&#xff0c;要么同时成功&#xff0c;要么同时失败。&#xff08;下订单、减库存、减积分&#xff09;一致性&#xff1a;数据在事务的前后&#xff0c;业务整体一致。&#xff08;存取钱的总数量&#xff09;隔…

从零开始的 Hugging Face 项目:我的首个在线 SQL 查询工具之旅20241111

从零开始的 Hugging Face 项目&#xff1a;我的首个在线 SQL 查询工具之旅 作为一名 AI 初学者&#xff0c;我最近完成了一个意义非凡的项目&#xff1a;在 Hugging Face Spaces 上构建了一个简单却实用的在线 SQL 查询工具。这个项目不仅让我了解了 Hugging Face 平台的核心功…

Windows,虚拟机Ubuntu和开发板三者之间的NFS服务器搭建

Windows,虚拟机Ubuntu和开发板三者之间的NFS服务器搭建 &#xff08;1&#xff09;虚拟机 ubuntu 要使用桥接模式&#xff0c;不能使用其他模式 &#xff08;2&#xff09;通过网线将PC和开发板网口直连:这样的连接&#xff0c;开发板是无法连接外网的 &#xff08;3&#xff…

C语言第十一周课——函数的调用

目录 一、冒泡法排序 二、二分法查找 一、冒泡法排序 通过调用函数来实现冒泡法 #include<stdio.h> // 定义数组长度 #define SIZE 3 void bubbleSort(int arr[], int n);int main() {int arr[SIZE];int i;// 从控制台输入数字到数组printf("请输入%d个整数&#x…

C# 有趣的小程序—桌面精灵详细讲解

C# 桌面精灵详细讲解 最近写了一个简化版桌面精灵&#xff0c;效果如图所示&#xff0c;可以实现切换动画&#xff0c;说话、鼠标拖动&#xff0c;等功能。具体如何做&#xff0c;我发布了一个资源里面包含ppt详解、源代码以及动画素材。放心吧&#xff0c;免费的&#xff0c;…