状态机是这样的
包含静止、跑、攻击、死亡四个动画
下面是核心代码(PS:代码高亮插件出问题了,将就看一下吧。。)
AnimatorStateInfo stateInfo = m_ani.GetCurrentAnimatorStateInfo(0); if (stateInfo.fullPathHash == Animator.StringToHash("Base Layer.idle") && !m_ani.IsInTransition(0)) { m_ani.SetBool("idle", false); m_timer -= Time.deltaTime; if (m_timer > 0) return; if (Vector3.Distance(m_transform.position, m_player.m_transform.position) < 1.5f) { m_ani.SetBool("attack", true); } else { m_timer = 1; m_agent.SetDestination(m_player.m_transform.position); m_ani.SetBool("run", true); } } if (stateInfo.fullPathHash == Animator.StringToHash("Base Layer.run") && !m_ani.IsInTransition(0)) { m_ani.SetBool("run", false); m_timer -= Time.deltaTime; if (m_timer < 0) { m_agent.SetDestination(m_player.m_transform.position); m_timer = 1; } if (Vector3.Distance(m_transform.position, m_player.m_transform.position) <= 1.5f) { m_agent.Stop(); m_ani.SetBool("attack", true); } } if (stateInfo.fullPathHash == Animator.StringToHash("Base Layer.attack") && !m_ani.IsInTransition(0)) { RotateTo(); m_ani.SetBool("attack", false); if (stateInfo.normalizedTime >= 1.0f) { m_ani.SetBool("idle", true); m_timer = 2; } }