zoukankan      html  css  js  c++  java
  • 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>();
    
            }
        }
    }
    
  • 相关阅读:
    bootstrap初识
    司徒正美居中方式
    css中的浮动(float)
    fio
    简易接口测试脚本
    字符加密
    Python 汉诺塔
    Python 找零问题
    Python 二分法
    Python 冒泡排序
  • 原文地址:https://www.cnblogs.com/raymondking123/p/11416296.html
Copyright © 2011-2022 走看看