IEnumerator InputGenerationCoroutine() { Vector2 randomLocation = new Vector2( UnityEngine.Random.Range(-codingBugGenerationLimit.x, codingBugGenerationLimit.x), UnityEngine.Random.Range(-codingBugGenerationLimit.y, codingBugGenerationLimit.y) ); GameObject bugObject = Instantiate(prefabBug, randomLocation, Quaternion.identity); CodingBug script = bugObject.GetComponent <CodingBug>(); script.SetData(codingBugGenerationLimit, playerAvatar.transform, _isThreatened); bugObject.transform.SetParent(transform); float randomTime = _random.Next(minGenDuration, maxGenDuration); float elapsedTime = Time.time - _startTime; if (elapsedTime > gameplayDuration * 0.8) { randomTime /= 4; _isThreatened = true; } else if (elapsedTime > gameplayDuration / 2) { randomTime /= 2; } yield return(new WaitForSeconds(randomTime)); _inputGenerationCoroutine = InputGenerationCoroutine(); StartCoroutine(_inputGenerationCoroutine); }
IEnumerator GameplayTimer() { _startTime = Time.time; yield return(new WaitForSeconds(gameplayDuration)); if (_inputGenerationCoroutine != null) { StopCoroutine(_inputGenerationCoroutine); } foreach (Transform child in transform) { CodingBug script = child.GetComponent <CodingBug>(); if (script != null) { script.enabled = false; } } _state = State.Result; playerAvatar.Freeze(); playerData.SetBugLeft(transform.childCount); _currentDialog = resultDialog; _currentDialog.ApplyCharacter(_characterData); _currentDialog.Display(playerData, _characterData); }