void Update() { if (m_player.life <= 0) { return; } 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) <= AttackDistance) { 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; } MoveTo(); if (Vector3.Distance(m_transform.position, m_player.m_transform.position) <= AttackDistance) { m_agent.ResetPath(); 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_player.life -= attackPower; m_ani.SetBool("idle", true); m_timer = 2.0f; m_player.OnDmage(attackPower); } } if (stateInfo.fullPathHash == Animator.StringToHash("Base Layer.die") && !m_ani.IsInTransition(0)) { if (stateInfo.normalizedTime >= 1.0f) { print("delete"); Destroy(this.gameObject); } } }