代码:https://github.com/HushengStudent/myGameFramework
这里主要是介绍一下自己写的一个简单的行为树。
1、行为树?
①行为树是常见的游戏ai解决方案;常见做法就是程序实现好工具,由策划配置实现ai功能;这里就涉及到一个是行为树的框架实现和行为树编辑器实现;
②行为树节点分为两类,一是常见业务节点,可以有一个子节点;二是组合节点,一般没有具体业务逻辑,一般有多个子节点,只对子节点进行处理;以下是常见组合节点:
BTParallel 并行执行节点;
BTRandom 随机执行节点;
BTSelector 选择执行节点;
BTSequence 顺序执行节点;
2、行为树的框架
首先我们实现一个行为节点基类:
public abstract class AbsBehavior
{
private bool _awake = false;
private int _id;
private BaseEntity _entity = null;
private BehaviorState _reslut = BehaviorState.Reset;
public int Id { get { return _id; } set { _id = value; } }
public BaseEntity Entity { get { return _entity; } }
public BehaviorState Reslut { get { return _reslut; } set { _reslut = value; } }
public virtual bool IsComposite { get { return false; } }
public BehaviorState Behave(BaseEntity entity)
{
if (!_awake)
{
_awake = true;
_entity = entity;
Reslut = BehaviorState.Running;
AwakeEx();
}
Update();
return Reslut;
}
public bool ResetBehavior()
{
if (Reslut == BehaviorState.Running)
return false;
Reset();
_