这个行为树给我恶心的都想吐,我用的是4.24,跟着官网做达不到那个效果,跟着视频做也达不到那个效果,跟我弄的非常不耐烦,最后终于在今天整出来了。有的地方用了一下我自己的逻辑。//诸位依靠教程的,一定得自己动脑思考,锻炼独立编码的能力,不要“过度”依赖教程,要学会举一反三

我用的是第三人称模板

OK,我来给你从1讲到8,其中一个没啥用

首先第一个,是行为树里面的一个服务,

ps:若不知道行为树服务是什么的话参考官方文档:https://docs.unrealengine.com/zhCN/Engine/ArtificialIntelligence/BehaviorTrees/BehaviorTreesOverview/index.html

里面的逻辑我当你说一下,获取玩家坐标,AI坐标,玩家到AI坐标相减画一条线,最后合一,好像叫什么Nor......,我们就记他Nor,这个是合一向量的,

之后去前方坐标,Forward,这两个东东点乘,也就是dot,然后去反余弦值,判定,是否在55°角之内,设一个if分支

如果是,则说明看见玩家了,采用追逐(Attack),如果没有,采用不追逐(Idle)

ps:若不知道点乘:https://blog.csdn.net/kebu12345678/article/details/80724336    这个博客可以参考一下。

第二个,黑板,节点:TargetActor,Object类型,底下要设为Actor;枚举类型:目的是定义AI攻击还是不攻击(巡逻),两种状态,Idle,Attack,均为枚举类型

那么第一个蓝图,行为树服务蓝图就可以设置黑板值了,蓝图SetBlackBoardASObject,新建一个变量,类型为BlackBoardKey,名字TagetActor,把它和蓝图SetBlackBoardASObject键值连上,还有个Object就是GetPlayerCharacter,我是凭记忆写的不一定正确,把它和Object连上。

设置枚举,SetBlackBoardAsEnum,枚举在黑板上确认使用上图第5个,也就是AI_Enum,枚举选项选择那个Attack,不是idle。因为已经发现玩家了,应该是攻击

忘了说了第一个一开始调用的是 事件 Tick AI,我是凭记忆写的,每秒更新AI,

在if那个false分支上,重复上面的,调用Idle,好像还有个事件,再次调用AI,好像是A打头的,事件  A......   AI......

在那里再调用一遍SetBlackBoardAsEnum 值为Idil

在这里设置速度,因为我是默写,所以把思路写下来:

首先先GetMovementComponent,castToMoveComponentCharacter,SetMaxWalkSpeed,

我头疼就头疼在这儿,因为我一设置单独的速度task,或者函数,寻路就不成功,所以我把它给设置到服务里了。

这个是行为树,我追逐玩家和巡逻的行为树,

第4个,控制蓝图,一定要把AIcharacter类里面的AI控制改为这个我们新建的AI控制,我这个是AI_Controller,设置的话在组件图标中最上面的,细节面板应该能看到,第8个就是我的character,我把第三人称那个给拷贝了一份,然后清空里面的事件。摄像机和弹簧臂我都给删了。

控件蓝图需要写一个EventBegin,就是默认三个事件中的最上面的那个,让RunBehaviourTree与他连接。

别忘了把BehaviourTree设置为我们新建的Tree,我这个是AI_BT,蓝图节点有选项的,选择我们建的蓝图就可以了

第6个巡逻,我不写了,太累了,上图讲一下重点。

主要用到MoveToLocation,移动到坐标,下面的三个是检测移动成没成功,成功后,FinishExcute结束事件,我觉得没有必要,直接一个结束事件得了

ReceiveExcuteAI,这个节点是此任务运行时,就是行为树指到到你这个任务时出发的,上面4个是设置速度的,那个GetRandomLocation...的是获取随机坐标,

我直接用ActorLocation。

上面那个树节点MoveTo是移动到,选择器上的装饰器设置如下:

开发一定要自己动脑,不要“过度”依赖教程

后记:Nav...mesh打头的在编辑器界面左面搜索,这个是路径追踪,让它覆盖游戏中的所有物体,然后按下P键即可设置完毕,设置完是绿色的。

迈布-----UE4AI自动巡逻与攻击的更多相关文章

  1. 分布式拒绝服务攻击 DDoS

    分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒 ...

  2. 基于Armitage的MSF自动化集成攻击实践

    基于Armitage的MSF自动化集成攻击实践 目录 0x01 实践环境 0x02 预备知识 0x03 Armitage基础配置 0x04 Nmap:Armitage下信息搜集与漏洞扫描 0x05 A ...

  3. Armitage攻击winxp——P201421410029

    实验简介 实验所属系列: 安全工具使用 实验对象:本科/专科信息安全专业 相关课程及专业: linux基础.网络安全 实验类别: 实践实验类 预备知识 Armitage基本介绍       Armit ...

  4. Linux下防御DDOS攻击的操作梳理

    DDOS的全称是Distributed Denial of Service,即"分布式拒绝服务攻击",是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求.耗尽目标主机资源 ...

  5. 如何配置Linux系统防火墙,以防止DDOS攻击?

    虚拟主机服务商在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等.通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长.比较彻底的解决方法是添置硬件防火墙.不过,硬件防 ...

  6. 自动化中间人攻击工具subterfuge小实验

    Subterfuge是一款用python写的中间人攻击框架,它集成了一个前端和收集了一些著名的可用于中间人攻击的安全工具. Subterfuge主要调用的是sslstrip,sslstrip 是08 ...

  7. MetaSploit攻击实例讲解------Metasploit自动化攻击(包括kali linux 2016.2(rolling) 和 BT5)

    不多说,直接上干货! 前期博客 Kali linux 2016.2(Rolling)里Metasploit连接(包括默认和自定义)的PostgreSQL数据库 Kali linux 2016.2(Ro ...

  8. 技术报告:APT组织Wekby利用DNS请求作为C&C设施,攻击美国秘密机构

    技术报告:APT组织Wekby利用DNS请求作为C&C设施,攻击美国秘密机构 最近几周Paloalto Networks的研究人员注意到,APT组织Wekby对美国的部分秘密机构展开了一次攻击 ...

  9. DoS攻击种类

    DoS攻击有许多种类,主要有Land攻击.死亡之ping.泪滴.Smurf攻击及SYN洪水等. 据统计,在所有黑客攻击事件中,syn洪水攻击是最常见又最容易被利用的一种DoS攻击手法. 1.攻击原理 ...

随机推荐

  1. java8 Optional优雅非空判断

    java8 Optional优雅非空判断 import java.util.ArrayList;import java.util.List;import java.util.Optional; pub ...

  2. day 27 网路编程 面向对象多继承

    知识补充: 字符串转化为字节 string1  = input(“请输入你的名字”) string1.encode('utf-8') 字节转化为字符串 byte1 = b"alex" ...

  3. just_connect.py

    # -*- coding=utf-8 -*-from mysql.connector import connect config = { 'host': '192.168.199.139', 'por ...

  4. at、crontab、anacron的基本使用

    Linux的任务调度机制主要分为两种: 1. 执行一次:将在某个特定的时间执行的任务调度 at 2. 执行多次: crontab 3.关机后恢复尚未执行的程序 anacron. ①at at命令用于在 ...

  5. Logistic回归算法梯度公式的推导

    最近学习Logistic回归算法,在网上看了许多博文,笔者觉得这篇文章http://blog.kamidox.com/logistic-regression.html写得最好.但其中有个关键问题没有讲 ...

  6. day20191113笔记

    默写:程序=数据结构+操作系统. 一.文件上传 1.导入commons-fileupload.jar commons-io.jar 2.配置 <bean id="multipartRe ...

  7. 程序员的算法课(18)-常用的图算法:广度优先(BFS)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...

  8. 第四章 开始Unity Shader学习之旅(2)

    目录 1. 强大的援手:Unity提供的内置文件和变量 1.1 内置的包含文件 1.2 内置的变量 2. Unity提供的Cg/HLSL语义 2.1 什么是语义 2.2 Unity支持的语义 2.3 ...

  9. Springboot整合webservice

    Springboot整合webservice 2019-12-10 16:34:42 星期二 WebService是什么 WebService是一种跨编程语言和跨操作系统平台的远程调用技术,服务之间的 ...

  10. python 协程与go协程的区别

    进程.线程和协程 进程的定义: 进程,是计算机中已运行程序的实体.程序本身只是指令.数据及其组织形式的描述,进程才是程序的真正运行实例. 线程的定义: 操作系统能够进行运算调度的最小单位.它被包含在进 ...