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

扫一扫,访问微社区

开发者专栏

关注:1720

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

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

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

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

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

43

主题

355

帖子

4096

积分

Rank: 9Rank: 9Rank: 9

UID
42814
好友
32
蛮牛币
6162
威望
0
注册时间
2014-8-31
在线时间
1270 小时
最后登录
2017-6-22

专栏作家

QQ
发表于 2015-11-22 00:26:55 | 显示全部楼层 |阅读模式

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

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

x
大家好,这次给大家继续带来behave行为树的第三个内容,顺序节点

  顺序节点会让连接它的子节点从左到右依次执行,  每个节点从底部的线决定了顺序,摆放的位置无关紧要,如果第一个子节点返回失败,则整个节点返回失败。如果该子节点返回成功,
则会自动往右边一个子节点执行,如果该节点返回runing,则会重新开始运行。 shunxu-1.png

好,然后我们在原来的类里面加入3个新的方法
[C#] 纯文本查看 复制代码
  private int alpha = 0;
    private int gameLoading = 0;
    public BehaveResult TickFadeInAction(Tree sender)
    {
        Debug.Log("左边");
        if (gameLoading >= 100)
        {
            return BehaveResult.Failure;
        }
        alpha++;
        Debug.Log("左边alpha:"+alpha.ToString());
        if (alpha < 255)
        {
            Debug.Log("Running左边alpha:" + alpha.ToString());
            return BehaveResult.Running;
        }
        else
        {
            alpha = 255;
            return BehaveResult.Success;
        }
    }

    public BehaveResult TickFadeOutAction(Tree sender)
    {
        Debug.Log("中间");
        //return BehaveResult.Failure;
        alpha--;
        Debug.Log("中间alpha:" + alpha.ToString());
        if (alpha > 0)
        {
            return BehaveResult.Running;
        }
        else
        {
            alpha = 0;
            return BehaveResult.Success;
        }
    }

    public BehaveResult TickGotoGameAction(Tree sender)
    {
        Debug.Log("右边");
        gameLoading++;
        Debug.Log("右边"+gameLoading.ToString());
        if (gameLoading<100)
        {
           return BehaveResult.Running;
        }
        else
        {
            return BehaveResult.Success;
        }
    }



这3个方法里面,为了直观,我写了 左边,中间和右边 ,一开始会运行TickFadeInAction  左边方法,首先会依次增加Alpha,然后加到255后 ,返回成功,执行下一个方法,
否则返回running一直运行(running 会运行当前子节点,而不是从头开始)。 然后到了TickFadeOutAction  也就是中间方法,会依次减去alpha值,在减到0之前会一直返回running ,
重新运行TickFadeOutAction 中间方法。 当返回成功后,则执行TickGotoGameAction 右边方法。 在TickGotoGameAction方法中会增加gameloading的值,一旦到达100,返回成功,
则该整个节点返回成功,就会重新运行 ,我们运行后就可以看到效果了
shunxu-2.png ,这黎有一点需要注意的是 shunxu-3.png 在节点的Frequency的值里面我们要改大一点,否则会运行的非常久,
我们改到60,就基本会像update方法一样的速度了,但事实证明好像也没有那么快, 好了,今天的内容就是 顺序节点

评分

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

查看全部评分


回复

使用道具 举报

3偶尔光临
248/300
排名
9618
昨日变化
5

1

主题

45

帖子

248

积分

Rank: 3Rank: 3Rank: 3

UID
26961
好友
0
蛮牛币
741
威望
0
注册时间
2014-5-27
在线时间
130 小时
最后登录
2016-8-23

VIP

QQ
发表于 2015-11-24 13:26:36 | 显示全部楼层
我第二天的 装饰方法  和第三天的 顺序方法都没有调用呢 楼主能分析下原因吗? 基本是照着做的

回复

使用道具 举报

排名
329
昨日变化
2

43

主题

355

帖子

4096

积分

Rank: 9Rank: 9Rank: 9

UID
42814
好友
32
蛮牛币
6162
威望
0
注册时间
2014-8-31
在线时间
1270 小时
最后登录
2017-6-22

专栏作家

QQ
 楼主| 发表于 2015-11-24 13:29:52 | 显示全部楼层
alanshearer 发表于 2015-11-24 13:26
我第二天的 装饰方法  和第三天的 顺序方法都没有调用呢 楼主能分析下原因吗? 基本是照着做的 ...

每次的脚本我都有重新更换,但是都基于我第一天传的工程里面,确保行为树的名字和start里面引用的是否正确

回复

使用道具 举报

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

本版积分规则

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