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框架在很多项目当中拥有广泛的应用,很多时候做项目前人开坑开了一半就消失了,后人为了填补各种的坑就遭殃的不得了.嘛,程序猿大家都不喜欢像文案策划一样组织文字写东西 ...
随机推荐
- [make]makefile使用积累
[注]:文中所指手册皆为GNU make Version 4.1 1.make的一般特性 1.1.Makefiles的构成 Makefiles包含五种元素: 显式规则(explicit rules), ...
- JQuery中$.ajax()方法参数都有哪些?
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...
- Android Studio2.2.2下RecyclerView的使用
1,概述 RecyclerView可以完全代替ListView.GridView,整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同Layout ...
- 64位系统下找不到office 32位组件
如果系统式64位的,而装的是32位的office软件,在运行栏中输入命令:dcomcnfg,打开组件服务管理窗口,但是却发现找不到Microsoft Excel程序, 这主要是64位系统的问题,exc ...
- PyCharm 3.4.1注册码
PyCharm 3.4下载地址:http://www.jetbrains.com/pycharm/download/index.html PyCharm 3.0 注册码 PyCharm3 序列号 Li ...
- JavaScript面试题
一道常被人轻视的前端JS面试题 标签(空格分隔): JavaScript function Foo() { getName = function () { alert (1); }; return t ...
- 如何将C#类库做成COM
在类库项目的属性中, 选择生成, 最下方的"为COM的互操作注册"进行勾选, 并且将项目的Properties中, AssemblyInfo.cs中的[assembly: ComV ...
- hdu1004
Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...
- Robot_bfs
Description The Robot Moving Institute is using a robot in their local store to transport different ...
- ajax异步提交的两种方法
第一种是原始的ajax,第二种是在jQuery中使用ajax.这是我为测试两种提交方法而写的一段代码. 1.struts.xml <package name="json" e ...