private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Minion" && playerController.normalAttack == true)
        {
            //Debug.Log(this.name + " Hit " + other.gameObject.name);

            //Find Minion and Minion GO
            Minion     m    = DictionaryHelper.KeyByValue <Minion, GameObject>(cgc.minionGameObjectMap, other.gameObject);
            GameObject m_go = cgc.minionGameObjectMap[m];

            // Calculate DMG
            m.MinionGethit();
            if (m.canTakeDMG == true)
            {
                FloatingTextController.CreateFloatingDMG(m.CalAndTakeDamage(), other.transform);
            }

            // Update Health Bar
            GameObject m_canvas = m_go.transform.Find("CharCanvas").gameObject;
            if (m_canvas.activeSelf == false)
            {
                m_canvas.SetActive(true);
            }
            HealthBar hb = m_canvas.GetComponentInChildren <HealthBar>();
            hb.HealthBarChange(m.HP, m.MaxHP);
        }
    }
Example #2
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.tag == "Minion" && playerController.normalAttack == true)
     {
         //Debug.Log(this.name + " Hit " + other.gameObject.name);
         FloatingTextController.CreateFloatingDMG("555", other.transform);
         Minion m = DictionaryHelper.KeyByValue <Minion, GameObject>(cgc.minionGameObjectMap, other.gameObject);
         Debug.Log(m.name);
     }
 }
Example #3
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Player" && m.minionState == MinionState.Attack)
        {
            //Debug.Log(MinionGO.name + "  Hit  " + other.gameObject.name);
            FloatingTextController.CreateFloatingDMG(p.TakeDamage(m), other.transform);

            // Update Health Bar
            playerHPBar.HealthBarChange(p.HP, p.MaxHP);
        }
    }
Example #4
0
    private void OnMinionChanged(Minion m)
    {
        //Debug.Log("OnMinionChanged");

        if (minionGameObjectMap.ContainsKey(m) == false)
        {
            Debug.LogError("OnCharacterChanged -- Minion not in minionGameObjectMap.");
            return;
        }
        GameObject m_go   = minionGameObjectMap[m];
        Animator   m_anim = m_go.GetComponent <Animator>();

        // Find Canvas in child
        GameObject m_canvas = m_go.transform.Find("CharCanvas").gameObject;

        // Rotate canvas to main camera
        m_canvas.transform.position = m_go.transform.position + new Vector3(0, 0, 0.5f);
        m_canvas.transform.rotation = Camera.main.transform.rotation;

        // Set position
        if (m.minionState == MinionState.ChaseStraight)
        {
            Vector3 actualTargetPos = new Vector3(playerGO.transform.position.x, 0, playerGO.transform.position.z);
            m_go.transform.position = Vector3.MoveTowards(m_go.transform.position, actualTargetPos, m.speed * Time.deltaTime);
            m.currTile = new Tile(World, Mathf.RoundToInt(m_go.transform.position.x), Mathf.RoundToInt(m_go.transform.position.z));
        }
        else
        {
            m_go.transform.position = new Vector3(m.X, 0, m.Z);
        }

        // If minion got hit from behind , rotate to player and Attack player
        if (m.minionState2 == MinionState2.GetHit && m.seePlayer == false)
        {
            // Vector3 direction = new Vector3(playerGO.transform.position.x - m_go.transform.position.x,0,playerGO.transform.position.z - m_go.transform.position.z);
            // m_go.transform.rotation = Quaternion.Slerp(m_go.transform.rotation, Quaternion.LookRotation(direction), 0.02f);
            m.seePlayer        = true;
            m.playerInATKRange = true;
        }

        // If not see Player, Rotate to Patrol direction
        if (m.seePlayer == false)
        {
            if (m.directionVector != Vector3.zero)
            {
                m_go.transform.rotation = Quaternion.Slerp(m_go.transform.rotation, Quaternion.LookRotation(m.directionVector), 0.08f);
            }
        }
        // If see Player, Rotate to player (not Y position)
        else
        {
            Vector3 direction = new Vector3(playerGO.transform.position.x - m_go.transform.position.x, 0, playerGO.transform.position.z - m_go.transform.position.z);
            m_go.transform.rotation = Quaternion.Slerp(m_go.transform.rotation, Quaternion.LookRotation(direction), 0.04f);
        }


        // Set Animator variable

        //if (m.minionState2 == MinionState2.GetHit
        //	&& (m.minionState == MinionState.Idle
        //	|| m.minionState == MinionState.Patrol
        //	|| m.minionState == MinionState.Chase)) {
        //	m_anim.SetBool("isIdle", false);
        //	m_anim.SetBool("isWalk", false);
        //	m_anim.SetBool("isAttack", false);
        //	m_anim.SetBool("isGetHit", true);
        //	m_anim.SetBool("isDie", false);
        //}

        switch (m.minionState)
        {
        case MinionState.Idle:
            m_anim.SetBool("isIdle", true);
            m_anim.SetBool("isWalk", false);
            m_anim.ResetTrigger("isAttack");
            //m_anim.SetBool("isAttack",false);
            m_anim.SetBool("isGetHit", false);
            m_anim.SetBool("isDie", false);
            break;

        case MinionState.Patrol:
            m_anim.SetBool("isIdle", false);
            m_anim.SetBool("isWalk", true);
            m_anim.ResetTrigger("isAttack");
            //m_anim.SetBool("isAttack",false);
            m_anim.SetBool("isGetHit", false);
            m_anim.SetBool("isDie", false);
            break;

        case MinionState.Chase:
            m_anim.SetBool("isIdle", false);
            m_anim.SetBool("isWalk", true);
            m_anim.ResetTrigger("isAttack");
            //m_anim.SetBool("isAttack",false);
            m_anim.SetBool("isGetHit", false);
            m_anim.SetBool("isDie", false);
            break;

        // Melee Minion Attack by do animation with Hitbox collider
        // Range Minion Instantiate projectile
        case MinionState.Attack:
            m_anim.SetBool("isIdle", false);
            m_anim.SetBool("isWalk", false);
            m_anim.SetTrigger("isAttack");
            //m_anim.SetBool("isAttack",true);
            m_anim.SetBool("isGetHit", false);
            m_anim.SetBool("isDie", false);

            if (m.combatType == CombatType.Range)
            {
                Instantiate(characterGOS[m.objectType + "_Projectile"], m_go.transform.position, m_go.transform.rotation);
            }
            else if (m.combatType == CombatType.Melee)
            {
                Collider[] overlaps = Physics.OverlapSphere(
                    m_go.gameObject.transform.Find("ATKPoint").transform.position, m.MeleeATKRange, playerLayer);
                if (overlaps.Length != 0)
                {
                    //foreach(Collider c in overlaps) {
                    //	GameObject p_go = c.GetComponent<Transform>().gameObject;
                    //}
                    if (m.alreadyATK == true)
                    {
                        FloatingTextController.CreateFloatingDMG(World.player.TakeDamage(m), playerGO.transform);
                    }
                }
            }
            break;

        //case MinionState.GetHit:
        //	m_anim.SetBool("isIdle", false);
        //	m_anim.SetBool("isWalk", false);
        //	m_anim.SetBool("isAttack", false);
        //	m_anim.SetBool("isGetHit", true);
        //	m_anim.SetBool("isDie", false);
        //	break;
        case MinionState.Die:
            m_anim.SetBool("isIdle", false);
            m_anim.SetBool("isWalk", false);
            m_anim.ResetTrigger("isAttack");
            //m_anim.SetBool("isAttack",false);
            m_anim.SetBool("isDie", true);
            break;

        default:
            break;
        }
        // Death after animation end
        if (m.minionState == MinionState.Die &&
            m_anim.GetCurrentAnimatorStateInfo(0).IsName("Die") &&
            m_anim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1.0f)
        {
            m.Death();
        }
    }