当前位置:网站首页>Unity行为树AI分享
Unity行为树AI分享
2022-08-04 05:25:00 【丁小未】
前言
之前在公司做了一个简单的行为树相关的知识分享,感觉还是花了不少心思和精力在准备上,现在分享给大家,一起学习,共同进步!
需求
三个敌人默认在老巢,如果检测到周围有“敌人”(主角),就追随主角并且达到一定距离范围就射击,如果“敌人”跑远追不上了则返回老巢,如果在追击“敌人”的过程中,自己被射击血量低于20%则向老巢方向逃跑,并且返回老巢指定位置进行回血,当血量回满之后则返回初始位置。我方主角由玩家自己控制,可以移动,可以射击。这里AI主要是设计敌方的AI。
分析
根据上面需求,可以看出来敌方AI大体分为待机巡视、追击、返回、回血几个阶段,具体设计可以看下面效果的第六步。
效果
1.敌人初始化并且返回老巢调整面向
2.碰到“敌人”靠近,跟踪并且射击
3.如果追不上“敌人”则返回到老巢
4.如果在追击的过程中,自己被攻击且血量低于安全值则“逃跑”,返回到回血基地
被“敌方攻击”过程中,返回到右上角回血基地,下图是正在回血,从左下角的log即可看出。
5.多个敌人也是可以的,我们可以通过变量控制生成几个AI敌人
敌方是动态生成出来的,可以看到上图EnemyManager节点一开始是没有敌人的,后来我们控制生成3个敌人则运行的时候出现了3个Enemy。
6.敌人的AI行为树结构
PPT教案
以下PPT是我花了好几十个小时整理的,单纯一个复杂的一页图可能就需要画半天。









































Demo源码
https://github.com/dingxiaowei/AIDemo
学习交流群
375151422
边栏推荐
- Do you think border-radius is just rounded corners?【Various angles】
- C Expert Programming Chapter 5 Thinking about Linking 5.2 Advantages of Dynamic Linking
- sql server如何得到本条记录与上一条记录的差异,即变动值
- (Kettle) pdi-ce-8.2 连接MySQL8.x数据库时驱动问题之终极探讨及解决方法分析
- [Cocos 3.5.2]开启模型合批
- TensorRTx-YOLOv5工程解读(二)
- SLSA 框架与软件供应链安全防护
- 在被面试官说了无数次后,终于潜下心来整理了一下JVM的类加载器
- The string class introduction
- 8款最佳实践,保护你的 IaC 安全!
猜你喜欢

4.3 Annotation-based declarative transactions and XML-based declarative transactions

Dynamic programming of the division of numbers

MySQL log articles, binlog log of MySQL log, detailed explanation of binlog log

《看见新力量》第四期免费下载!走进十五位科技创业者的精彩故事

Typora 使用保姆级教程 | 看这一篇就够了 | 历史版本已被禁用

嵌入式系统驱动初级【4】——字符设备驱动基础下_并发控制

解决错误:npm WARN config global `--global`, `--local` are deprecated

The difference between px, em, and rem

【论文阅读笔记】无监督行人重识别中的采样策略

【问题解决】同一机器上Flask部署TensorRT报错记录
随机推荐
npm安装依赖报错npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfonpm ERR! errno ENOTFOUND
MySQL数据库面试题总结(2022最新版)
12. Paging plugin
你以为border-radius只是圆角吗?【各种角度】
7.18 Day23----标记语言
As soon as flink cdc is started, the CPU of the source Oracle server soars to more than 80%. What is the reason?
《看见新力量》第四期免费下载!走进十五位科技创业者的精彩故事
sql server如何得到本条记录与上一条记录的差异,即变动值
编程大杂烩(三)
C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.3 什么是声明,什么是定义
JS基础--强制类型转换(易错点,自用)
day13--postman interface test
DataTable uses Linq for grouping and summarization, and converts the Linq result set into DataTable
MySQL date functions
7.13 Day20----MYSQL
7. Execution of special SQL
8款最佳实践,保护你的 IaC 安全!
【JS】js给对象动态添加、设置、删除属性名和属性值
C Expert Programming Chapter 5 Thinking about Linking 5.1 Libraries, Linking and Loading
读者让我总结一波 redis 面试题,现在肝出来了