add scripts from post-scale attempt

This commit is contained in:
Sylvia 2026-07-10 01:08:12 -07:00
parent 96dcfa9064
commit 87383d5b8c
18 changed files with 362 additions and 148 deletions

View file

@ -0,0 +1,52 @@
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;
}
}
}