Unity进阶:行为树 02 夺旗战搭建场景,AI脚本,旗子拿起

版权申明:

  • 本文原创首发于以下网站:
  1. 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
  2. 优梦创客的官方博客:https://91make.top
  3. 优梦创客的游戏讲堂:https://91make.ke.qq.com
  4. 『优梦创客』的微信公众号:umaketop
  • 您可以自由转载,但必须加入完整的版权声明

场景搭建效果图

展示图GIF(夺旗,夺旗后去终点)


Decorators:对单个任务进行操作
Composites:复合任务
Conditionals:做判断
Actions:做行为

行为树1找旗帜

Flee远离目标
Inverter:取反
创建全局变量:OffenseSpeed,AngularSpeed。
原理:是否看到敌人,没看到取反去找旗帜,看到敌人远离敌人,Sequence的中断类型选Self

找旗帜行为树样板

添加行为树

添加注释

创建全局变量

可以切换行为树

行为树2找到旗帜去终点

拿到旗帜去终点,未拿到旗帜,追旗帜
脚本判断是否拿到旗帜,运行成功失败。

public class IsHasFlag :Conditional {
    private Offense offense;
    public override void OnAwake()
    {
        offense = this.GetComponent<Offense>();
    }
    public override TaskStatus OnUpdate()
    {
        if (offense.hasFlag)
        {
            return TaskStatus.Success;
        }
        return TaskStatus.Failure;
    }
}

旗帜上面添加脚本,判断是否与tag为玩家的发生碰撞,发生碰撞给一个boll值,并让旗子碰撞玩家坐标相等,做出带着旗子走的样子

   private Offense owner;
    public void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Offense")
        {
            if (owner != null)
            {
                owner.hasFlag = false;
            }
            other.GetComponent<Offense>().hasFlag = true;
            transform.parent = other.transform;
            owner = other.GetComponent<Offense>();

        }
    }
}
原文地址:https://www.cnblogs.com/raymondking123/p/11416296.html