Example #1
0
    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);
            }
        }
    }