unity行为树制作AI简单例子(1)
用行为树来制作AI是非常方便的,今天就给大家简单介绍一下行为树的强大之处。
所用插件 Behavior Designer v1.421
最开始 我使用过Rain插件,不过用过Behavior Designer后感觉界面更为直观,更容易设计出AI
新建一个项目,先导入该插件
新建一个Cube,命名为Floor,作为本场景的地板,Scale设置为(20, 0.1, 20),Tag设置为Floor
创建一个Capsule,命名为Player,Tag设置为Player,添加一个简单的Player脚本控制移动
using UnityEngine;
using System.Collections; public class Player : MonoBehaviour { public float speed = ;
private float _x;
private float _z; void Update () { _x = Input.GetAxis("Horizontal") * Time.deltaTime * speed;
_z = Input.GetAxis("Vertical") * Time.deltaTime * speed;
transform.position += new Vector3(_x, , _z);
}
}
导入怪物的模型,并设置好其状态机,我只简单设置攻击、站立和行走3种状态
在场景中拖出一个实例,命名为Monster
基本场景已经搭建好了,现在简单介绍一下行为树的组件
大致来说行为树有4种节点
Actions是行为节点,能执行一定动作
Log就是一个行为节点,能执行一个Log操作,在Inspector面板设置输出的Text
执行结果:
Decorators是装饰节点,能修饰子节点
Repeater就是一个装饰节点,它修饰后子节点不断循环
执行结果:
Composites该节点能决定子节点执行的顺序
Return Failure是一个装饰节点,它的作用是让子节点无论如何返回Failure
Parallel是平行节点,它会让子节点都正常执行,无论有没有节点返回Failure,事实上如果没有平行节点,右边的Log是不能执行的,
因为默认是从左到右顺序执行,有一个返回Failure则跳出子节点,可在下一个例子顺序节点看出
这次把平行节点改成顺序节点,右方行为节点就执行不了了,因为左边返回Failure跳出了子节点
Conditionals是判断节点,配合Composites中的Selector使用
Selector和Conditionals配合使用类似if elseif else的效果
若是第一个判断节点返回成功,则不继续运行,相当于if执行成功
若是第一个返回失败,第二个返回成功,则相当于elseif
若是两个都返回失败,则会执行最后一个Log,相当于else
行为树由四种节点组成,每种节点其实默认都提供了大量节点,这里没办法一一介绍,需要自己细细研究,
这一次先到这里,下一次会介绍如何自定义节点并创建一棵完整的行为树
美しきもの:http://music.163.com/#/song?id=22782025
unity行为树制作AI简单例子(1)的更多相关文章
- unity行为树制作AI简单例子(2)
继续昨天的工程,给Monster添加一个空物体命名为AI,在AI添加脚本BehaviorTree,然后就可以打开行为树编辑器进行编辑了 先写好自定义的节点脚本,下面是一个寻找漫游点的行为节点脚本 us ...
- 【Unity技巧】制作一个简单的NPC
1. 写在前面 前几天看了cgcookie的一个教程,学习了下怎么根据已有人物模型制作一个仿版的NPC人物,感觉挺好玩的,整理一下放到博客里! 先看一下教程里面的最终效果. 是不是很像个幽灵~ 下面是 ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
- iOS实用技能扩展-静态库的制作与简单使用
前言:此文是关于静态库的概念描述,如何制作及简单调试使用,不同版本的说明与场景使用. 1.关于库的简介: 库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetw ...
- TensorFlow练习13: 制作一个简单的聊天机器人
现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...
- 让AI简单且强大:深度学习引擎OneFlow技术实践
本文内容节选自由msup主办的第七届TOP100summit,北京一流科技有限公司首席科学家袁进辉(老师木)分享的<让AI简单且强大:深度学习引擎OneFlow背后的技术实践>实录. 北京 ...
- JFrame、JPanel 、Layout开发的简单例子
写了Java这么久,居然发现想手写一个带网格袋布局的JFrame,还不记得怎么写,写了这么多代码真不敢说记得所有细节. 幸好,只要记清楚概念就能快速开发.首先,明确一下3种容器类的差别和用途: No. ...
- Unity 3D 简易制作摄像机围绕物体随鼠标旋转效果
Unity 3D 简易制作摄像机围绕物体随鼠标旋转效果 梗概: 一. 摄像机围绕目标物体旋转, 即摄像机离目标物体有一定的距离且旋转轴心为该物体的位置. 二. 当目标物体被障碍物挡住后, 需要将摄像机 ...
- PureMVC和Unity3D的UGUI制作一个简单的员工管理系统实例
前言: 1.关于PureMVC: MVC框架在很多项目当中拥有广泛的应用,很多时候做项目前人开坑开了一半就消失了,后人为了填补各种的坑就遭殃的不得了.嘛,程序猿大家都不喜欢像文案策划一样组织文字写东西 ...
随机推荐
- 例子:Bluetooth app to device sample
本例子演示了: 判断蓝牙是否打开,是通过一个HRsult值为0x8007048F的异常来判断的 catch (Exception ex) { if ((uint)ex.HResult == 0x800 ...
- vmware虚拟机网络自动断开的问题
最近搭建一个集群环境,因此用vmware安装了几台虚拟机,系统是centos7.2. 但是发现网络总是不经意间自动断开,重启网络(service network restart)恢复. 虚拟机网络类型 ...
- CSS中box-sizing属性的理解与部分用法
今天看了一些关于box-sizing的一些资料,在这里整理一下,希望也能对大家有所帮助. box-sizing是CSS的一个属性,很好的解决了盒模型的相关问题.CSS中的盒模型(Box model)分 ...
- Bootstrap-datetimepicker年月日
<div class="input-group date form_date" data-date="" data-date-format="y ...
- HTTP2试用小记
原文:https://www.clarencep.com/2016/11/17/upgrade-nginx-to-support-http2/ 这两天把公司的网站升级到了全站https. 顺便瞄到了H ...
- WPF项目中所遇到的一些问题集
1. 没有Timer控件 解决方案: 第一步:申明一个DispatcherTimer 类的变量, private DispatcherTimer timer; //定时控件 第二步:初始化这个类 ti ...
- Android编译系统参考手册
build/core/clear_vars.mk Clear out values of all variables used by rule templates 清除LOCAL变量,每个模块的And ...
- js/jquery 回调函数的定义方法
基本写法: 带参数的回调函数 以上回调函数,直接传入function作为参数,同样,还可以传入json对象作为参数...如下. 该方法的优势是可以定义多个回调函数....类似$.ajax回调函数中的s ...
- 操作系统学习笔记(五)--CPU调度
由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交 ...
- phonegap android 开发环境搭建
1.下载JDK并安装 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 配置环境变量 ...