UE4/5 行为树使用教程

news/2024/11/18 13:49:51/

使用行为树需确保目标蓝图继承自Character基类,然后根据本文下面的流程操作即可。

1.创建AIController

首先需要在角色自身蓝图之外创建一个新的蓝图,继承自AIController:
在这里插入图片描述

2.挂载AIController

找到角色自身蓝图类设置中的Pawn一栏,挂载刚刚创建的控制器蓝图:
在这里插入图片描述

3.创建行为树文件

创建行为树文件,添加Sequence节点,可以单击New Task创建自定义任务节点,便于初期上手使用。
在这里插入图片描述
挂载刚刚创建的自定义Task节点:
在这里插入图片描述

4.绑定行为树启动

回到刚刚创建的控制器类,链接节点Run Behavior Tree以启动行为树。
在这里插入图片描述

5.绑定行为树节点事件

接下来为自定义节点添加事件,需要注意接收事件后,需要主动调用函数Finish Execute告诉行为树该节点调用完成了,并且需要返回Success变量,以确认该任务是否完成,完成后才会往下执行后面的节点。
在这里插入图片描述

6.测试

运行场景测试后,会发现节点正常执行。
在这里插入图片描述

7.添加延迟

但我们不需要这么高频率的调用,可以在后面加一个Wait节点:
在这里插入图片描述
这样行为树就会1秒钟执行一次。


Tips:
Sequence节点 - 从左往右执行,当一个节点执行成功且结束,则执行下一个,当一个节点执行失败,则跳出。
Selector节点 - 从左往右执行,当一个节点执行失败,则执行下一个,只要有一个节点执行成功,则跳出,且Selector节点算作执行成功。


http://www.ppmy.cn/news/51943.html

相关文章

Redis入门学习笔记【一】

目录 一、Redis是什么 二、Redis数据结构 2.1 Redis 的五种基本数据类型 2.1.1String(字符串) 2.1.2字符串列表(lists) 2.1.3字符串集合(sets) 2.1.5哈希(hashes) 2.2 Red…

Postman登录注册指导

在做后端开发的小伙伴经常需要测试自己写的接口是否可以用 这时Postman就是一个很好的选择 如果您还没有下载 可以参考我的文章 API接口调试工具Postman下载安装步骤 安装好之后 我们就需要处理 它的一个注册和登录 我们点击右上角 这里就有一个创建一个账户 我们点击一下 …

Object RDBMS Mapping原理简介

从微软开始推出.Net Framework来对抗Java开始,其主要卖点之一就是C#是一个可以快速的进行RAD开发,它可以使用数据感知组件DataSet,OleDbConnection等组件来非常快速的开发数据库应用。通常来说,只要在界面上摆放一些数据感知组件如…

Linux服务器后台运行代码(即关闭终端后继续运行)

目录 一、nohup 1、nohup 和 & 的区别 2、使用方法 二、screen 1、使用方法 2、其他命令 程序执行不受终端关闭或断网影响:两种方法 ① nohup;② screen 区别:使用 nohup 把程序放到后台,就再也无法切换程序到前台了…

day4-Django的model

目录 1)setting文件配置 2)理解models 3)model定义 4)常用字段类型 5)常用属性 6)数据库迁移 7)Meta类 1)setting文件配置 sqlite数据库: DATABASES {default: {ENGINE: d…

Promise的状态和方法

Promise的状态 初始状态 -> pending   初始状态可以改变   在resolve 或者 reject 调用之前都处于这个状态 最终成功状态 -> fulfilled   执行 resolve 函数,状态改变为 fulfilled   执行 onFulfilled 函数 最终失败状态 -> rejected   执行 re…

安装配置 ZLMediaKit

一、ZLMediaKit 库简介 ZLMediaKit 是一个基于 C11 的高性能运营级流媒体服务框架 官方写的项目特点: 基于 C11 开发,避免使用裸指针,代码稳定可靠,性能优越。 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4…

Android性能优化—ViewPagers + Fragment缓存优化

大家看标题,可能会有点儿懵,什么是ViewPagers,因为在很久之前,我们使用的都是ViewPager,但是现在更多的是在用ViewPager2,因此用ViewPagers(ViewPager、ViewPager2)来代替两者&#…