public override void Enter() { boss4Pot.enemy.health.Resistance = DamageType.BASIC | DamageType.EXPLOSIVE | DamageType.FIRE | DamageType.ICE | DamageType.LIGHTNING | DamageType.EARTH | DamageType.TRUE; boss4Pot.StartFloating(); boss4Pot.StartCoroutine(Move()); }
IEnumerator Teleport() { boss.StopFloating(); teleporting = true; Vector3 teleportLocation = Vector3.zero; bool tooClose = false; do { teleportLocation = Utility.RandomPointInBounds(boss.MovementBoundaries.bounds); tooClose = false; for (int i = 0; i < projectiles.Length && !tooClose; i++) { //tooClose = (projectiles[i].transform.position - teleportLocation).sqrMagnitude < 16.0f; tooClose = (projectiles[i].transform.position - teleportLocation).sqrMagnitude < 4.0f; } } while (tooClose); Vector3 originalScale = boss.transform.localScale; float shrinkTime = 0.0f; while (boss.transform.localScale.sqrMagnitude != 0) { shrinkTime += Time.deltaTime; shrinkTime = Mathf.Clamp(shrinkTime, 0.0f, 1.0f); boss.transform.localScale = originalScale - (originalScale * (shrinkTime / 1.0f)); yield return(null); } boss.transform.position = teleportLocation; boss.transform.localScale = Vector3.zero; float growthTime = 0.0f; while (boss.transform.localScale.sqrMagnitude < originalScale.sqrMagnitude) { growthTime += Time.deltaTime; growthTime = Mathf.Clamp(growthTime, 0.0f, 1.0f); boss.transform.localScale = originalScale * (growthTime / 1.0f); yield return(null); } boss.StartFloating(); teleporting = false; }