Пример #1
0
        protected override void UpdateEx()
        {
            if (Reslut == BehaviorState.Running)
            {
                int count = _list.Count;
                if (_target == null)
                {
                    int index = Random.Range(0, count);
                    _target = _list[index];
                }
                switch (_target.Behave(Entity))
                {
                case BehaviorState.Running:
                case BehaviorState.Finish:
                    Reslut = BehaviorState.Running;
                    break;

                case BehaviorState.Success:
                    Reslut = BehaviorState.Finish;
                    break;

                case BehaviorState.Failure:
                case BehaviorState.Reset:
                    Reslut = BehaviorState.Failure;
                    LogUtil.LogUtility.PrintError("[BTRandom]BTRandom execute failure!");
                    break;

                default:
                    Reslut = BehaviorState.Failure;
                    LogUtil.LogUtility.PrintError("[BTRandom]BTRandom execute failure!");
                    break;
                }
            }
        }
Пример #2
0
        public void Update()
        {
            if (_enable && _entity != null && (_root.Reslut == BehaviorState.Reset || _root.Reslut == BehaviorState.Running))
            {
                BehaviorState reslut = _root.Behave(_entity);
                switch (reslut)
                {
                case BehaviorState.Reset:
                    break;

                case BehaviorState.Failure:
                    break;

                case BehaviorState.Running:
                    break;

                case BehaviorState.Success:
                    break;

                default:
                    _enable = false;
                    LogUtil.LogUtility.PrintError("[BehaviorTree]error state.");
                    break;
                }
            }
        }
Пример #3
0
 protected sealed override void Update(float interval)
 {
     if (Reslut == BehaviorState.Running)
     {
         UpdateEx(interval);
     }
     else if (Reslut == BehaviorState.Finish)
     {
         if (_nextNode == null)
         {
             Reslut = BehaviorState.Success;
             return;
         }
         if (_nextNode != null && _nextNode.Behave(Entity, interval) == BehaviorState.Success)
         {
             Reslut = BehaviorState.Success;
         }
     }
 }