コード例 #1
0
 public BTLoop(BTNode _parentNode, BTPrecondition _precondition = null, int _loopCount = INFINITELOOP)
     : base(_parentNode, _precondition)
 {
     loopCount     = _loopCount;
     mCurrentCount = 0;
     maxChild      = 1;
 }
コード例 #2
0
 public Shoot(GameObject bullet, Transform shooter, Vector2 direct, int id = -1, BTPrecondition precondition = null) : base(precondition)
 {
     m_BulletObject = bullet;
     m_shooter      = shooter;
     m_direct       = direct;
     m_timeWaitId   = id;
 }
コード例 #3
0
 public BTPreconditionNOT(BTPrecondition _precondition)
 {
     if (_precondition == null)
     {
         Debugger.Log("BTreeNodePreconditionNOT is null");
     }
     mPrecondition = _precondition;
 }
コード例 #4
0
ファイル: Move.cs プロジェクト: hatmitlaem/little-samson
 public Move(float speed, Vector2 direct, Vector3 posStart, float distanceX, float distanceY,
             int id = -1, BTPrecondition precondition = null, bool allowChangeDirect = false) : base(precondition)
 {
     m_Speed             = speed;
     m_Direct            = direct;
     m_posStart          = posStart;
     m_MaxDistanceX      = distanceX;
     m_MaxDistanceY      = distanceY;
     m_directID          = id;
     m_allowChangeDirect = allowChangeDirect;
 }
コード例 #5
0
ファイル: BTAction.cs プロジェクト: GameObjectW/BTTree
 public BTAction(BTPrecondition precondition = null) : base(precondition)
 {
 }
コード例 #6
0
 public MonsterWait(BTPrecondition precondition = null) : base(precondition)
 {
 }
コード例 #7
0
 public BTSequence(BTPrecondition preCondition) : base(preCondition)
 {
 }
コード例 #8
0
 public FindToTargetDestination(string targetName, string destinationDataName, float minDistance, BTPrecondition precondition = null) : base(targetName, destinationDataName, precondition)
 {
     _minDistance = minDistance;
 }
コード例 #9
0
 public FindTargetDestination(string targetName, string destinationDataName, BTPrecondition precondition = null) : base(precondition)
 {
     _targetName          = targetName;
     _destinationDataName = destinationDataName;
 }
コード例 #10
0
ファイル: MonsterAttack.cs プロジェクト: cyulei/NewbieZone
 public MonsterMeleeAttack(int atk, BTPrecondition precondition = null) : base(atk, precondition)
 {
 }
コード例 #11
0
 /// <summary>
 /// 怪物朝目的地转向
 /// </summary>
 /// <param name="targetName">目的地的string值</param>
 /// <param name="precondition">执行条件</param>
 public MonsterRotateToTarget(string targetName, BTPrecondition precondition = null) : base(precondition)
 {
     locationName = targetName;
     isFirstEnter = true;
 }
コード例 #12
0
        BTPrecondition DrawPrecondition(BTPrecondition _condition, int _space, ref int index)
        {
            index = index + 1;
            BTPrecondition result = null;

            if (_condition == null)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Space(_space);

                mPrecondition[index] = EditorGUILayout.ObjectField("", mPrecondition[index], typeof(MonoScript), false);
                if (mPrecondition[index] != null)
                {
                    Type type = GetPreconditionType(mPrecondition[index].name);
                    if (type == null)
                    {
                        mPrecondition[index] = null;
                        return(_condition);
                    }
                    result = (BTPrecondition)type.GetConstructor(new Type[] { }).Invoke(new object[] { });
                }
                GUILayout.EndHorizontal();
            }
            else
            {
                mPrecondition[index] = null;
                GUILayout.BeginHorizontal();
                GUILayout.Space(_space);
                string[] scripts = AssetDatabase.FindAssets("t:Script " + _condition.GetType().Name);
                if (scripts.Length > 0)
                {
                    string     path       = AssetDatabase.GUIDToAssetPath(scripts[0]);
                    MonoScript monoScript = (MonoScript)AssetDatabase.LoadAssetAtPath(path, typeof(MonoScript));
                    var        obj        = EditorGUILayout.ObjectField("", monoScript, typeof(MonoScript), false);
                    if (obj != null)
                    {
                        Type type = GetPreconditionType(obj.name);
                        if (type == null)
                        {
                            return(_condition);
                        }
                        result = (BTPrecondition)type.GetConstructor(new Type[] { }).Invoke(new object[] { });
                    }
                    else
                    {
                        result = null;
                    }
                }
                GUILayout.EndHorizontal();
                _space = _space + SPACEDETLE;

                BTPrecondition _lastPreCondition = _condition;
                if (result is BTPreconditionAND)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(_space);
                    int childCount = 0;
                    if (_lastPreCondition is BTPreconditionAND)
                    {
                        BTPreconditionAND _lastCondAND = (BTPreconditionAND)_lastPreCondition;
                        childCount = _lastCondAND.GetChildPreconditionCount();
                    }
                    var val = EditorGUILayout.IntField(childCount);
                    GUILayout.EndHorizontal();

                    if (_lastPreCondition is BTPreconditionAND)
                    {
                        BTPreconditionAND _lastCondAND          = (BTPreconditionAND)_lastPreCondition;
                        BTPrecondition[]  childPreconditions    = new BTPrecondition[val];
                        BTPrecondition[]  curChildPreconditions = _lastCondAND.GetChildPrecondition();
                        for (int i = 0; i < val; i++)
                        {
                            BTPrecondition _cond = null;
                            if (curChildPreconditions.Length >= i + 1)
                            {
                                _cond = curChildPreconditions[i];
                            }
                            childPreconditions[i] = DrawPrecondition(_cond, _space, ref index);
                        }
                        ((BTPreconditionAND)result).SetChildPrecondition(childPreconditions);
                    }
                    else
                    {
                        BTPrecondition[] childPreconditions = new BTPrecondition[val];
                        for (int i = 0; i < val; i++)
                        {
                            childPreconditions[i] = DrawPrecondition(null, _space, ref index);
                        }
                        ((BTPreconditionAND)result).SetChildPrecondition(childPreconditions);
                    }
                }
                else if (result is BTPreconditionOR)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(_space);
                    int childCount = 0;
                    if (_lastPreCondition is BTPreconditionOR)
                    {
                        BTPreconditionOR _lastCondOR = (BTPreconditionOR)_lastPreCondition;
                        childCount = _lastCondOR.GetChildPreconditionCount();
                    }
                    var val = EditorGUILayout.IntField(childCount);
                    GUILayout.EndHorizontal();

                    if (_lastPreCondition is BTPreconditionOR)
                    {
                        BTPreconditionOR _lastCondOR           = (BTPreconditionOR)_lastPreCondition;
                        BTPrecondition[] childPreconditions    = new BTPrecondition[val];
                        BTPrecondition[] curChildPreconditions = _lastCondOR.GetChildPrecondition();
                        for (int i = 0; i < val; i++)
                        {
                            BTPrecondition _cond = null;
                            if (curChildPreconditions.Length >= i + 1)
                            {
                                _cond = curChildPreconditions[i];
                            }
                            childPreconditions[i] = DrawPrecondition(_cond, _space, ref index);
                        }
                        ((BTPreconditionOR)result).SetChildPrecondition(childPreconditions);
                    }
                    else
                    {
                        BTPrecondition[] childPreconditions = new BTPrecondition[val];
                        for (int i = 0; i < val; i++)
                        {
                            childPreconditions[i] = DrawPrecondition(null, _space, ref index);
                        }
                        ((BTPreconditionOR)result).SetChildPrecondition(childPreconditions);
                    }
                }
                else if (result is BTPreconditionNOT)
                {
                    BTPrecondition curChildPreconditions = null;
                    if (_lastPreCondition is BTPreconditionNOT)
                    {
                        BTPreconditionNOT _lastCondNOT = (BTPreconditionNOT)_lastPreCondition;
                        curChildPreconditions = _lastCondNOT.GetChildPrecondition();
                    }
                    curChildPreconditions = DrawPrecondition(curChildPreconditions, _space, ref index);
                    ((BTPreconditionNOT)result).SetChildPrecondition(curChildPreconditions);
                }
            }

            return(result);
        }
コード例 #13
0
    private float attackDistance;         // 攻击距离


    /// <summary>
    /// 到玩家位置应该走的目的地
    /// </summary>
    /// <param name="targetName">玩家的gameobject名称</param>
    /// <param name="playerLocation">在数据库中玩家当前位置的string</param>
    /// <param name="destinationName">在数据库中距离的string</param>
    /// <param name="minDistance">攻击距离</param>
    /// <param name="precondition">进入该状态的条件</param>
    public MonsterFindToTargetDestination(string targetName, string playerLocation, string destinationName, float minDistance, BTPrecondition precondition = null) : base(precondition)
    {
        playerName          = targetName;
        destinationDataName = destinationName;
        attackDistance      = minDistance;
        playerLocationName  = playerLocation;
    }
コード例 #14
0
 public BTRandomSelector(BTNode _parentNode, BTPrecondition _precondition = null, int _seed = DEFAULT_SEED)
     : base(_parentNode, _precondition)
 {
     seed    = _seed;
     mRandom = new System.Random(seed);
 }
コード例 #15
0
ファイル: PlayAnimation.cs プロジェクト: zaq1xsw/BT-Test
 public PlayAnimation(string animationName, BTPrecondition precondition = null) : base(precondition)
 {
     _animationName = animationName;
 }
コード例 #16
0
 /// <summary>
 /// 构造器
 /// </summary>
 /// <param name="precondition">运行该节点的条件</param>
 public BTNode(BTPrecondition precondition)
 {
     this.precondition = precondition;
 }
コード例 #17
0
ファイル: BTNode.cs プロジェクト: GameObjectW/BTTree
 protected BTNode(BTPrecondition preCondition)
 {
     _preCondition = preCondition;
 }
コード例 #18
0
    private BTNode activeChild;   // 当前激活的孩子节点

    public BTPrioritySelector(BTPrecondition precondition = null) : base(precondition)
    {
    }
コード例 #19
0
ファイル: MonsterAttack.cs プロジェクト: cyulei/NewbieZone
    protected bool isFirstEnter;           // 是否是第一次攻击

    public MonsterAttack(int atk, BTPrecondition precondition = null) : base(precondition)
    {
        ATK          = atk;
        isFirstEnter = true;
    }
コード例 #20
0
ファイル: BTParallel.cs プロジェクト: GameObjectW/BTTree
 public BTParallel(BTPrecondition preCondition) : base(preCondition)
 {
     _results = new List <BTResult>();
 }
コード例 #21
0
ファイル: MonsterAttack.cs プロジェクト: cyulei/NewbieZone
    private float lastTimeEvaluated;  // 上次执行时间点


    public MonsterLongDistanceAttacks(int atk, BTPrecondition precondition = null) : base(atk, precondition)
    {
    }
コード例 #22
0
 public BTPreconditionBinary(BTPrecondition lhs, BTPrecondition rhs)
     : base(2)
 {
     AddChild(lhs).AddChild(rhs);
 }
コード例 #23
0
 public FindEscapeDestination(string targetName, string destinationDataName, float safeDistance, BTPrecondition precondition = null) : base(targetName, destinationDataName, precondition)
 {
     _safeDistance = safeDistance;
 }
コード例 #24
0
 public BTPreconditionUnary(BTPrecondition lhs)
     : base(1)
 {
     AddChild(lhs);
 }
コード例 #25
0
 public AiTestAction1(BTPrecondition precondition = null) : base(precondition)
 {
 }
コード例 #26
0
ファイル: BTAction.cs プロジェクト: Enanyy/LuaGame-slua
 public BTAction(BTNode _parentNode, BTPrecondition _precondition = null)
     : base(_parentNode, _precondition)
 {
 }
コード例 #27
0
 public BTPreconditionNot(BTPrecondition lhs, int uniqueKey)
     : base(lhs)
 {
     _uniqueKey = uniqueKey;
 }
コード例 #28
0
 public BTParallel(ParallelFunction func, BTPrecondition precondition) : base(precondition)
 {
     results   = new List <BTResult>();
     this.func = func;
 }
コード例 #29
0
 public BTPreconditionXor(BTPrecondition lhs, BTPrecondition rhs, int uniqueKey)
     : base(lhs, rhs)
 {
     _uniqueKey = uniqueKey;
 }
コード例 #30
0
 public BTSequence(BTNode _parentNode, BTPrecondition _precondition = null)
     : base(_parentNode, _precondition)
 {
 }