async Task IntroduceLevel() { await _speechOut.Speak("There are two obstacles."); _lowerHandle.Free(); // we free this here, so that level can introduce "objects of interest" Level level = GetComponent <Level>(); await level.PlayIntroduction(); _upperHandle.Free(); await _speechOut.Speak("Feel for yourself. Say yes or done when you're ready."); await _speechIn.Listen(new Dictionary <string, KeyCode>() { { "yes", KeyCode.Y }, { "done", KeyCode.D } }); }
/// <summary> /// Starts a new round. /// </summary> /// <returns></returns> async Task ResetGame() { await _speechOut.Speak("Spawning player"); player.transform.position = playerSpawn.position; await _upperHandle.SwitchTo(player, 0.2f); await _speechOut.Speak("Spawning enemy"); enemy.transform.position = enemySpawn.position; enemy.transform.rotation = enemySpawn.rotation; await _lowerHandle.SwitchTo(enemy, 0.2f); if (level >= enemyConfigs.Length) { Debug.LogError($"Level {level} is over number of enemies {enemyConfigs.Length}"); } enemy.GetComponent <EnemyLogic>().config = enemyConfigs[level]; _upperHandle.Free(); player.SetActive(true); enemy.SetActive(true); _levelStartTime = Time.time; }