using System.Collections; using UnityEngine; public class OrinMoveAndSpawn : EnemyAbility { [SerializeField] private Enemy ghostFairy; [SerializeField] private int fairiesToSpawn; private int currentFairiesLeft; [SerializeField] private int variance; [SerializeField] private Enemy thisEnemy; [SerializeField] private float moveSpeed; protected override void AbilityEffects() { base.AbilityEffects(); currentFairiesLeft = fairiesToSpawn + Random.Range(-variance, variance); thisEnemy.preventWobble = true; thisEnemy.isStalled = true; StartCoroutine(MoveToPosition(transform.position, WaveManager.instance.GetRandomEnemyPoint(), moveSpeed)); } private IEnumerator MoveToPosition(Vector3 enemyOrigin, Vector3 moveDirection, float lerpSpeed) { float currentMovement = 0; while (currentMovement < 1) { currentMovement += Time.deltaTime * lerpSpeed; if (currentMovement >= 1) { SpawnGhostFairy(); } thisEnemy.transform.position = Vector3.Lerp(enemyOrigin, moveDirection, currentMovement); yield return null; } } private void SpawnGhostFairy() { Enemy newEnemy = Instantiate(ghostFairy, WaveManager.instance.enemyFolder); newEnemy.originalPosition = transform.position; WaveManager.instance.enemiesInPlay.Add(newEnemy); if (currentFairiesLeft > 0) { currentFairiesLeft--; StartCoroutine(MoveToPosition(transform.position, WaveManager.instance.GetRandomEnemyPoint(), moveSpeed)); } else { thisEnemy.preventWobble = false; thisEnemy.isStalled = false; } } }