using EnemyAIMachineTools; using System.Collections; using UnityEngine; public class EnemyTurretSearchState : EnemyState { private static EnemyTurretSearchState _instance; //only declared once private EnemyTurretSearchState() //set instance to itself { if (_instance != null) { return; } _instance = this; } public static EnemyTurretSearchState instance //creates the instance of the first state if it does not exist { get { if (_instance == null) { new EnemyTurretSearchState(); } return _instance; } } public override IEnumerator InState(EnemyAIMachine owner) { float waitTime = 6f; float elapsedTime = 0f; float randomRotation = Random.Range(-60, 60); while (owner.botMachine.currentState == EnemyTurretSearchState.instance) { if (!owner.disabled) { elapsedTime += Time.deltaTime; owner.turretPos.Rotate(0, randomRotation * Time.deltaTime, 0); if (elapsedTime >= waitTime) { elapsedTime = 0f; randomRotation = Random.Range(-60, 60); } if (owner.canSeeEnemy && owner.enemyObject != null) { owner.botMachine.ChangeState(EnemyAttackState.instance); yield break; } else { owner.canSeeEnemy = false; } } yield return null; } } }