Ejemplo n.º 1
0
    protected override E_NodeStatus Trick()
    {
#if UNITY_EDITOR
        CheckResetNodeStatus();
#endif
        for (int i = 0; i < ChildList.Count; i++)
        {
            E_NodeStatus result = ChildList[i].GetTrick();
#if UNITY_EDITOR
            SetAfterNodesNotWork(i);
#endif
            switch (result)
            {
            case E_NodeStatus.Running:
                m_Tree.SetCurNode(ChildList[i]);
                return(result);

            case E_NodeStatus.Success:
                ChildList[i].OnComplete();
                return(result);
            }
        }

        return(E_NodeStatus.Failure);
    }
Ejemplo n.º 2
0
    private void Update()
    {
        if (RuntimeTest.Instance.CloseAI)
        {
            return;
        }
        if (NodeAssets != null)
        {
            if (NodeAssets.RootNode == null)
            {
                return;
            }
            _timeCount += GameManager.DeltaTime;
            if (_timeCount > Interval)
            {
                _timeCount = 0;
                E_NodeStatus result = NodeAssets.RootNode.GetTrick();
                if (result == E_NodeStatus.Failure)
                {
                    SetCurNode(null);
                }
            }

            if (_curNode != null)
            {
                _curNode.OnStay();
            }
        }
    }
Ejemplo n.º 3
0
    protected override E_NodeStatus Trick()
    {
#if UNITY_EDITOR
        CheckResetNodeStatus();
#endif
        for (int i = _index; i < ChildList.Count;)
        {
            E_NodeStatus result = ChildList[i].GetTrick();
#if UNITY_EDITOR
            SetAfterNodesNotWork(i);
#endif
            switch (result)
            {
            case E_NodeStatus.Running:
                m_Tree.SetCurNode(ChildList[i]);
                return(result);

            case E_NodeStatus.Success:
                ChildList[i].OnComplete();
                _index++;
                i = _index;
                if (_index == ChildList.Count)
                {
                    _index = 0;
                    return(result);
                }
                break;

            case E_NodeStatus.Failure:
                OnInterrupt();
                return(result);
            }
        }
        throw new System.Exception("未知错误");
    }
Ejemplo n.º 4
0
 public static string GetSoldierAnimNameByStatus(E_NodeStatus status)
 {
     if (status == E_NodeStatus.Idle)
     {
         return(ANMI_NAME_IDLE);
     }
     else if (status == E_NodeStatus.attack)
     {
         return(ANMI_NAME_ATTACK);
     }
     else if (status == E_NodeStatus.walk)
     {
         return(ANMI_NAME_RUN);
     }
     else if (status == E_NodeStatus.skill)
     {
         return(ANMI_NAME_SKILL);
     }
     else if (status == E_NodeStatus.cheer)
     {
         return(ANMI_NAME_RESPONSE);
     }
     else
     {
         return(string.Empty);
     }
 }
Ejemplo n.º 5
0
    /// <summary>
    /// 获取节点状态
    /// </summary>
    /// <returns></returns>
    public E_NodeStatus GetTrick()
    {
        E_NodeStatus status = Trick();

#if UNITY_EDITOR
        switch (status)
        {
        case E_NodeStatus.NotWork:
            ChangeNodeStatus(m_Status.NotWork);
            break;

        case E_NodeStatus.Running:
            ChangeNodeStatus(m_Status.Running);
            break;

        case E_NodeStatus.Success:
            ChangeNodeStatus(m_Status.Success);
            break;

        case E_NodeStatus.Failure:
            ChangeNodeStatus(m_Status.Failure);
            break;
        }
#endif
        return(status);
    }
Ejemplo n.º 6
0
 public override void SetRoleStatus(E_NodeStatus state)
 {
     m_playerController.SetRoleStatus(state);
     if (state == E_NodeStatus.attack && (ID == 5002 || ID == 5003))
     {
         INode pNode = MoveBaseMaker.Instance.GetNode(1003);
         pNode.displayNode.transform.SetParent(displayNode.transform);
         pNode.displayNode.transform.localPosition = Vector3.zero;
         pNode.displayNode.transform.forward       = GetDir();
     }
 }
Ejemplo n.º 7
0
    void Start()
    {
//         m_MovementAxisName = "Vertical";
//         m_TurnAxisName = "Horizontal";

        m_runHash       = Animator.StringToHash("Run");
        m_attackHash    = Animator.StringToHash("Attack");
        m_skillHash     = Animator.StringToHash("Skill");
        m_hitHash       = Animator.StringToHash("Hit");
        m_dieHash       = Animator.StringToHash("Die");
        m_cheerHash     = Animator.StringToHash("Cheer");
        m_directionHash = Animator.StringToHash("Direction");
        m_curStatus     = E_NodeStatus.Idle;
        m_curStatusHash = -1;
        SetRoleStatus(E_NodeStatus.Idle);
    }
Ejemplo n.º 8
0
    protected override E_NodeStatus Trick()
    {
#if UNITY_EDITOR
        CheckResetNodeStatus();
#endif
        for (int i = _index; i < _randomList.Count;)
        {
            E_NodeStatus result = _randomList[i].GetTrick();
#if UNITY_EDITOR
            SetOtherNodesNotWork(_nodesList);
#endif
            switch (result)
            {
            case E_NodeStatus.Running:
                if (!_nodesList.Contains(_randomList[i]))
                {
                    _nodesList.Add(_randomList[i]);
                }
                m_Tree.SetCurNode(_randomList[i]);
                return(result);

            case E_NodeStatus.Success:
                _randomList[i].OnComplete();
                _index++;
                i = _index;
                if (i == _randomList.Count)
                {
                    return(result);
                }
                else
                {
                    if (!_nodesList.Contains(_randomList[i]))
                    {
                        _nodesList.Add(_randomList[i]);
                    }
                }
                break;

            case E_NodeStatus.Failure:
                OnInterrupt();
                return(result);
            }
        }
        throw new System.Exception("未知错误");
    }
Ejemplo n.º 9
0
    protected override E_NodeStatus Trick()
    {
#if UNITY_EDITOR
        CheckResetNodeStatus();
#endif
        for (int i = 0; i < ChildList.Count; i++)
        {
            E_NodeStatus result = _randomList[i].GetTrick();
            switch (result)
            {
            case E_NodeStatus.Running:
                if (!_nodesList.Contains(_randomList[i]))
                {
                    _nodesList.Add(_randomList[i]);
                }
                m_Tree.SetCurNode(_randomList[i]);
                return(result);

            case E_NodeStatus.Success:
                if (!_nodesList.Contains(_randomList[i]))
                {
                    _nodesList.Add(_randomList[i]);
                }
                _randomList[i].OnComplete();
                return(result);

            case E_NodeStatus.Failure:
                if (!_nodesList.Contains(_randomList[i]))
                {
                    _nodesList.Add(_randomList[i]);
                }
                continue;
            }
        }
        return(E_NodeStatus.Failure);
        //throw new System.Exception("未知错误");
    }
Ejemplo n.º 10
0
 public virtual void SetRoleStatus(E_NodeStatus state)
 {
 }
Ejemplo n.º 11
0
    public void SetRoleStatus(E_NodeStatus state)
    {
        if (state == m_curStatus || m_curStatus == E_NodeStatus.die)
        {
            return;
        }
        if (E_NodeStatus.Idle != state && state != E_NodeStatus.die)
        {
            if (m_curStatusHash != -1)
            {
                return;
            }
        }
        //m_animator.speed = 1.0f;
        m_curStatus = state;
        switch (state)
        {
        case E_NodeStatus.Idle:
            if (m_curStatusHash != -1)
            {
                //m_animator.SetBool(m_curStatusHash, false);
                m_animator.CrossFade("Idle", 0.2f, 0, 0);
            }
            m_curStatusHash = -1;
            break;

        case E_NodeStatus.walk:
        {
            //m_animator.SetBool(m_runHash, true);
            m_animator.CrossFade("Run", 0.2f, 0, 0);
        }
            m_curStatusHash = m_runHash;
            break;

        case E_NodeStatus.attack:
        {
            //if (m_animator.GetBool(m_attackHash)) return;
            //m_animator.SetBool(m_attackHash, true);
            m_animator.CrossFade("Attack", 0.2f, 0, 0);
            //m_animator.speed = 5.0f;
        }
            m_curStatusHash = m_attackHash;
            //Debug.Log("<<<<<<<<<<<<<<<<<<<<<<< attack <<<<<<<<<<<<<<< >>>>>>>");
            m_time = Time.time;
            break;

        case E_NodeStatus.skill:
        {
            //if (m_animator.GetBool(m_skillHash)) return;
            //m_animator.SetBool(m_skillHash, true);
            m_animator.CrossFade("Skill", 0.2f, 0, 0);
        }
            m_curStatusHash = m_skillHash;
            break;

        case E_NodeStatus.jump:
            break;

        case E_NodeStatus.hit:
        {
            //if (m_animator.GetBool(m_hitHash)) return;
            //m_animator.SetBool(m_hitHash, true);
            m_animator.CrossFade("Hit", 0.2f, 0, 0);
        }
            m_curStatusHash = m_hitHash;
            break;

        case E_NodeStatus.die:
            //                 m_animator.SetBool(m_runHash, false);
            //                 m_animator.SetBool(m_attackHash, false);
            //                 m_animator.SetBool(m_skillHash, false);
            //                 m_animator.SetBool(m_hitHash, false);
            //                 m_animator.SetBool(m_cheerHash, false);
            //                 if (m_animator.GetBool(m_dieHash)) return;
        {
            //m_animator.SetBool(m_dieHash, true);
            m_animator.CrossFade("Die", 0.2f, 0, 0);
        }
            m_curStatusHash = m_dieHash;
            break;

        case E_NodeStatus.cheer:
        {
            //if (m_animator.GetBool(m_cheerHash)) return;
            //m_animator.SetBool(m_cheerHash, true);
            m_animator.CrossFade("Cheer", 0.2f, 0, 0);
        }
            m_curStatusHash = m_cheerHash;
            break;
        }
    }
Ejemplo n.º 12
0
 public void PlayStatus(BaseNode pNode, E_NodeStatus StatusId, bool Forever = true)
 {
     pNode.SetRoleStatus(StatusId);
     //pNode.SetDir(Dir);
 }
Ejemplo n.º 13
0
 //获取用于识别动作的id
 public static int GetSoldierAnimIndex(int soliderId, E_NodeStatus status)
 {
     return(SoldierUnitConfig.GetSoldierAnimIndex(soliderId, GetSoldierAnimNameByStatus(status)));
 }