开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:1585

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 608|回复: 5

[云图] behave行为树学习使用第二天

[复制链接]  [移动端链接]
抢楼 抢楼 本帖为抢楼帖,欢迎抢楼! 
排名
373
昨日变化
1

43

主题

346

帖子

3772

积分

Rank: 9Rank: 9Rank: 9

UID
42814
好友
31
蛮牛币
5729
威望
0
注册时间
2014-8-31
在线时间
1141 小时
最后登录
2017-2-28

专栏作家

QQ
发表于 2015-11-20 14:42:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
大家好, 昨天给大家介绍了behave的基本搭建环境和运行了一个行为节点的代码,今天我们在升级一下,加入一个装饰节点。
如图 , 4-1.png 装饰节点的作用就是任何节点在连接一块的时候 做选择条件,相当于一个 if 做选择条件,然后我们还是用到昨天的MyAction,

而这次我们先在装饰节点判断,要不要去执行MyAction , 首先像我前面图一样 新建一个zhuangshi 的树,然后先拖动一个四方的装饰节点,在连一个圆圈节点在后面,
接着我们到脚本里添加一个新方法 ,命名规则还是像原来一样  BehaveResult Tick+"行为树里面的名字"+Decorator(Tree sender)  *这次名字后面跟着的不是Action,而是装饰节点的Decorator*
[C#] 纯文本查看 复制代码
  public BehaveResult TickShouldDoOrNotDecorator(Tree sender)
    {
        shoulDo = !shoulDo;
        if (shoulDo)
        {
            Debug.Log("要往下做");
            return BehaveResult.Success;
        }
        else
        {
            Debug.Log("不用做");
            return BehaveResult.Failure;
        }
    }



ok,我们的代码里面判断 要不要往下做,如果返回成功 则运行我们的子节点 MyAction,如果失败,则从新开始运行该节点的方法, 接着我们运行,就可以看见窗口的信息了 4-2.png 好了,今天的内容就是装饰节点 ,然后我重新写了一个代码,以便和昨天的区分  zhuangshi.cs 内容有点少,我就直接贴上代码好了
[C#] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;
using Behave.Runtime;
using Tree = Behave.Runtime.Tree;
public class zhuangshi : MonoBehaviour, IAgent
{
    Tree m_Tree;
    IEnumerator Start()
    {
        m_Tree = BLAgentBehaveLib.InstantiateTree(BLAgentBehaveLib.TreeType.NewCollection1_zhuangshi, this);

        while (Application.isPlaying && m_Tree != null)
        {
            yield return new WaitForSeconds(1.0f / m_Tree.Frequency);
            AIUpdate();
        }
    }
    void AIUpdate()
    {
        m_Tree.Tick();
    }
    public void Reset(Tree sender)
    {
        //先啥也不干
    }
    public int SelectTopPriority(Tree sender, params int[] IDs)
    {
        return 0;
    }
    public BehaveResult Tick(Tree sender, bool init)
    {
        Debug.Log("调用系统的Tick方法");
        return BehaveResult.Success;
    }
    public BehaveResult TickMyActionAction(Tree sender)
    {
        Debug.Log("我的action");
        return BehaveResult.Success;
    }
    private bool shoulDo = true;
    public BehaveResult TickShouldDoOrNotDecorator(Tree sender)
    {
        shoulDo = !shoulDo;
        if (shoulDo)
        {
            Debug.Log("要往下做");
            return BehaveResult.Success;
        }
        else
        {
            Debug.Log("不用做");
            return BehaveResult.Failure;
        }
    }
}



评分

参与人数 1鲜花 +50 收起 理由
朱迪 + 50 赞一个!

查看全部评分


回复

使用道具 举报

排名
3201
昨日变化
2

6

主题

116

帖子

605

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
32221
好友
8
蛮牛币
308
威望
0
注册时间
2014-7-2
在线时间
182 小时
最后登录
2016-8-18
发表于 2015-11-21 10:27:27 | 显示全部楼层
为什么我的和你一模一样,但就是不执行条件里面的输出!!

回复

使用道具 举报

排名
373
昨日变化
1

43

主题

346

帖子

3772

积分

Rank: 9Rank: 9Rank: 9

UID
42814
好友
31
蛮牛币
5729
威望
0
注册时间
2014-8-31
在线时间
1141 小时
最后登录
2017-2-28

专栏作家

QQ
 楼主| 发表于 2015-11-22 00:26:28 | 显示全部楼层
caiguihou 发表于 2015-11-21 10:27
为什么我的和你一模一样,但就是不执行条件里面的输出!!

节点根目录的Frequency 是不是0了 要改为1就会美妙输出一次了

回复

使用道具 举报

排名
3201
昨日变化
2

6

主题

116

帖子

605

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
32221
好友
8
蛮牛币
308
威望
0
注册时间
2014-7-2
在线时间
182 小时
最后登录
2016-8-18
发表于 2015-11-23 09:06:10 | 显示全部楼层
z7232124 发表于 2015-11-22 00:26
节点根目录的Frequency 是不是0了 要改为1就会美妙输出一次了

那个条件根本不进去,就只是输出“我的action”

回复

使用道具 举报

排名
3201
昨日变化
2

6

主题

116

帖子

605

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
32221
好友
8
蛮牛币
308
威望
0
注册时间
2014-7-2
在线时间
182 小时
最后登录
2016-8-18
发表于 2015-11-23 09:08:16 | 显示全部楼层
那个条件根本不进去,就只是输出“我的action”
C8BD9949-F02D-4481-A5C1-0E23E5B19546.png

回复

使用道具 举报

排名
373
昨日变化
1

43

主题

346

帖子

3772

积分

Rank: 9Rank: 9Rank: 9

UID
42814
好友
31
蛮牛币
5729
威望
0
注册时间
2014-8-31
在线时间
1141 小时
最后登录
2017-2-28

专栏作家

QQ
 楼主| 发表于 2015-11-23 16:11:25 | 显示全部楼层
caiguihou 发表于 2015-11-23 09:08
那个条件根本不进去,就只是输出“我的action”

start方法里面的   m_Tree = BLAgentBehaveLib.InstantiateTree(BLAgentBehaveLib.TreeType.NewCollection1_zhuangshi, this);  
这里应用对了是哪个行为树了么

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表