IEnumerator HuntTraitor() { while (true) { Transform _enemyTarget = null; if (!controlled && !changingStatus && !shootingLights) { foreach (GameObject _enemy in GameObject.FindGameObjectsWithTag(Tags.enemy)) { if (_enemy.GetComponent <EnemyController>().controlled) { _enemyTarget = _enemy.transform; break; } } if (_enemyTarget != null) { if (enemyTarget != null && enemyTarget.parent != _enemyTarget.parent) { StopCoroutine("ShootEnemy"); enemyTarget.GetComponent <EnemyController>().gettingShoot = false; enemy.gameObject.GetComponent <Animator>().SetBool("EnemyTraitor", false); } enemyTarget = _enemyTarget; mChaseTarget = enemyTarget.position; mDirection = (mChaseTarget - transform.position); if (Mathf.Abs(enemy.transform.position.y - enemyTarget.transform.position.y) > 1.6f) { animator.SetBool("EnemyTraitor", false); shootingLights = false; } bool collidingWithTarget = false; foreach (Collider2D obj in Physics2D.OverlapCircleAll(boxCollider2D.bounds.center, 0.1f)) { if (enemyTarget && obj.transform.parent == enemyTarget.parent && enemyTarget.GetComponent <EnemyController>().controlled) { collidingWithTarget = true; break; } else { collidingWithTarget = false; } } if (!enemy.isClimbing && (InLineOfShot(enemyTarget, weaponRange) || collidingWithTarget) && enemy.controller.collisions.below && !changingStatus && !inTransition && !gettingShoot && enemy.gameObject.GetComponent <Animator>().GetBool("EnemyTraitor")) { EnemyController enemyTargetC = enemyTarget.GetComponent <EnemyController>(); enemyTargetC.StopCoroutine("ShootEnemy"); EnemyWeapon _enemyWeapon = enemyTargetC.GetComponentInChildren <EnemyWeapon>(); //Debug.Log(_enemyWeapon.GetType().Equals(typeof(EnemyWeapon))); if (_enemyWeapon.GetType().Equals(typeof(EnemyWeapon))) { _enemyWeapon.enemyControlled.changingStatus = false; _enemyWeapon.enemyControlled.gettingShoot = false; _enemyWeapon.enemyControlled.StopCoroutine("ConrtolledOn"); _enemyWeapon.mLineRenderer.enabled = true; if (_enemyWeapon.lightningCoroutine != null) { _enemyWeapon.StopCoroutine(_enemyWeapon.lightningCoroutine); } _enemyWeapon.StopCoroutine("TrailingEffectOn"); _enemyWeapon.StopCoroutine("TrailingEffectOff"); Destroy(_enemyWeapon.particleEffect); } if (ranged) { StartCoroutine("ShootEnemy", enemyTarget); } else { StartCoroutine("MeleeAttack", enemyTarget); } } if (shootingLights || gettingShoot || inTransition) { mDirection = Vector2.zero; } if (!changingStatus && player != null) { if (InLineOfSight(player, sightRange) && GameObject.FindGameObjectWithTag(Tags.mainCamera).GetComponent <Collider2D>().bounds.Contains(transform.position + new Vector3(0, 0, -10)) && GameObject.FindGameObjectWithTag(Tags.mainCamera).GetComponent <Collider2D>().bounds.Contains(player.position + new Vector3(0, 0, -10))) { animator.SetBool("PlayerInSight", true); playerInSight = true; mChaseTarget = player.position; } } enemy.SetDirectionalInput(mDirection.normalized); } else { enemy.gameObject.GetComponent <Animator>().SetBool("EnemyTraitor", false); } } else if (changingStatus || enemy.controlling || gettingShoot || inTransition) { enemy.SetDirectionalInput(Vector2.zero); } yield return(null); } }