IEnumerator SpawnStrikePoint() { strikesRemaining = numberOfStrikes; float spawnRate = spawnRate1; while (strikesRemaining > 0) { float x = Random.Range(minX, maxX); float z = Random.Range(minZ, maxZ); Vector3 randPosition = new Vector3(x, yPosition, z); lastSpawned = Instantiate(strikePointPrefab, randPosition, Quaternion.identity); if (weaponStage == weaponStages.phase2) { spawnRate = spawnRate2; } else if (weaponStage == weaponStages.phase3) { spawnRate = spawnRate3; } yield return(new WaitForSeconds(spawnRate)); if (lastSpawned) { Debug.Log("Player SKIPPED last StrikePoint"); DestroyObject(lastSpawned); skips++; misses++; missText.text = misses.ToString(); // progress bar penalty } strikesRemaining--; float pctLeft = ((float)strikesRemaining / (float)numberOfStrikes) * 100f; Debug.Log("pctLeft=" + pctLeft); if (pctLeft < 33f && weaponStage == weaponStages.phase2) { Destroy(thisWeapon); weaponStage = weaponStages.phase3; thisWeapon = Instantiate(weapon.stage3, weaponTransform.position, weaponTransform.rotation); } else if (pctLeft < 66f && weaponStage == weaponStages.phase1) { Destroy(thisWeapon); weaponStage = weaponStages.phase2; thisWeapon = Instantiate(weapon.stage2, weaponTransform.position, weaponTransform.rotation); } } EvaluateQuality(); }
public void StartSpawning() { hits = 0; misses = 0; skips = 0; hitText.text = hits.ToString(); missText.text = misses.ToString(); weaponStage = weaponStages.phase1; float strikes = numberOfStrikes / 3; float totalTime = spawnRate1 * strikes + spawnRate2 * strikes + spawnRate3 * strikes; Debug.Log("totalTime=" + totalTime); progressBar.rate = totalTime; StartCoroutine(SpawnStrikePoint()); }