Exemplo n.º 1
0
 void OnTriggerEnter2D(Collider2D col)
 {
     if (attack.self.targetTag == col.gameObject.tag && 0 < hitCount)
     {
         UnitColliderDamage colliderDamage = col.gameObject.GetComponent <UnitColliderDamage>();
         if (null != colliderDamage)
         {
             hitCount -= 1;
             attack.Damage(colliderDamage.unit);
         }
     }
 }
Exemplo n.º 2
0
    IEnumerator Action()
    {
        actionState = ActionState.Idle;
        while (ActionState.Dead != actionState)
        {
            //if (0 < health.max) {
            healthBar.progress = (float)health.GetValue() / (float)health.max;
            //}
            unitAnimation.spriteRenderer.sortingOrder = (int)(transform.position.y * -1000);

            RaycastHit2D ray = Physics2D.Raycast(transform.position, Vector2.left, passiveAttack.data.maxRange, 1 << LayerMask.NameToLayer("Citadel"));
            if (null != ray.collider)
            {
                actionState = ActionState.Attack;
                unitAnimation.animator.SetTrigger("attack");

                if (null != unitMove.buff)
                {
                    unitAnimation.animator.speed = unitMove.speed;
                }
                else
                {
                    unitAnimation.animator.speed = passiveAttack.data.speed;
                }

                UnitColliderDamage colDamage = ray.collider.GetComponent <UnitColliderDamage>();
                if (null != colDamage)
                {
                    passiveAttack.target = colDamage.unit;
                }
                unitMove.enabled = false;
            }
            else
            {
                actionState = ActionState.Move;
                unitAnimation.animator.SetTrigger("move");
                unitAnimation.animator.speed = unitMove.speed;
                unitMove.enabled             = true;
                unitMove.Init(transform.position + Vector3.left, altitude);
            }

            yield return(new WaitForSeconds(0.1f));
        }

        unitMove.enabled = false;
        unitAnimation.animator.SetTrigger("dead");
        unitAnimation.animator.speed = 1.0f;
        healthBar.gameObject.SetActive(false);

        int rewardGold = (int)gold + (int)(gold * GameManager.Instance.goldBonus);

        GameManager.Instance.gold += rewardGold;

        GameObject effect = GameObject.Instantiate <GameObject> (GameManager.Instance.effectGoldReward);

        effect.transform.position = transform.position;
        Transform text = effect.transform.Find("Animation/Text");

        text.GetComponent <MeshRenderer>().sortingLayerName = "Effect";
        text.GetComponent <MeshRenderer>().sortingOrder     = 1;
        text.GetComponent <TextMesh> ().text = rewardGold.ToString();

        while (true)
        {
            AnimatorStateInfo state = unitAnimation.animator.GetCurrentAnimatorStateInfo(0);
            if (1.0f <= state.normalizedTime)
            {
                DestroyImmediate(gameObject, true);
                break;
            }
            yield return(new WaitForSeconds(0.1f));
        }
    }