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); } } }
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)); } }