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); }
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(); } } }
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("未知错误"); }
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); } }
/// <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); }
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(); } }
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); }
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("未知错误"); }
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("未知错误"); }
public virtual void SetRoleStatus(E_NodeStatus state) { }
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; } }
public void PlayStatus(BaseNode pNode, E_NodeStatus StatusId, bool Forever = true) { pNode.SetRoleStatus(StatusId); //pNode.SetDir(Dir); }
//获取用于识别动作的id public static int GetSoldierAnimIndex(int soliderId, E_NodeStatus status) { return(SoldierUnitConfig.GetSoldierAnimIndex(soliderId, GetSoldierAnimNameByStatus(status))); }