IEnumerator TimeToReact(float timeforreact, float timeBetweenAiAndPlayer, SetSprite.SpriteState aiState) { SetSprite.AiState = aiState; yield return(new WaitForSeconds(timeBetweenAiAndPlayer));//this is short, but it acts as kind of a buffer to get the rhythm right CheckInput.check = true; yield return(new WaitForSeconds(timeforreact)); CheckInput.check = false; if (CheckInput.InputIsCorrect == 1)//this sees whether you pressed the right number or not { StartCoroutine(ReactExpression(timeForReactionExpression, SetSprite.SpriteState.happyExpression)); audioSource.clip = correctSound; audioSource.Play(); } else { StartCoroutine(ReactExpression(timeForReactionExpression, SetSprite.SpriteState.angryExpression)); audioSource.clip = wrongSound; audioSource.Play(); } CheckInput.didPoints = false;//these just need to be reset afterwords CheckInput.InputIsCorrect = 0; CheckInput.restingAfterCorrect = false; }
IEnumerator ChangeEachAIStateOverTime(float timeBetweenStates, SetSprite.SpriteState state) { for (int i = 0; i < AiStateChange.AiGameObjects.Count; i++)//for each sprite, change pose, then wait then change pose then wait { AiStateChange.AiGameObjects[i].GetComponent <SetSprite>().State = state; yield return(new WaitForSeconds(timeBetweenStates)); AiStateChange.AiGameObjects[i].GetComponent <SetSprite>().State = SetSprite.SpriteState.normal; } StartCoroutine(TimeToReact(timeToReact, timeBetweenAiAndPlayer, state)); }
IEnumerator ChangeStatesOverTimeTwoPositions(float timeBetweenStates, SetSprite.SpriteState state1, SetSprite.SpriteState state2) {//for each ai it shows 2 poses that are the same. for (int i = 0; i < AiStateChange.AiGameObjects.Count; i++) { AiStateChange.AiGameObjects[i].GetComponent <SetSprite>().State = state1; yield return(new WaitForSeconds(timeBetweenStates - .1f));//this is the time between 2 states AiStateChange.AiGameObjects[i].GetComponent <SetSprite>().State = state2; yield return(new WaitForSeconds(timeBetweenStates)); AiStateChange.AiGameObjects[i].GetComponent <SetSprite>().State = SetSprite.SpriteState.normal; } StartCoroutine(TimeToReactTwoPositions(timeToReact, timeBetweenAiAndPlayer, state1, state2)); }
IEnumerator ReactExpression(float expressionTime, SetSprite.SpriteState aiState) { for (int i = 0; i < AiStateChange.AiGameObjects.Count; i++)//for each sprite, change pose to reaction pose { AiStateChange.AiGameObjects[i].GetComponent <SetSprite>().State = aiState; } yield return(new WaitForSeconds(expressionTime)); for (int i = 0; i < AiStateChange.AiGameObjects.Count; i++)//set sprite back to normal { AiStateChange.AiGameObjects[i].GetComponent <SetSprite>().State = SetSprite.SpriteState.normal; } }
IEnumerator TimeToReactTwoPositions(float timeforreact, float timeBetweenAiAndPlayer, SetSprite.SpriteState aiState1, SetSprite.SpriteState aiState2) { SetSprite.AiState = aiState1;//check for first pose yield return(new WaitForSeconds(timeBetweenAiAndPlayer)); CheckInput.check = true; yield return(new WaitForSeconds(timeforreact - .2f)); //time between 2 poses SetSprite.AiState = aiState2; //check for first pose CheckInput.check = false; if (CheckInput.InputIsCorrect == 1)//this sees whether you pressed the right number or not { StartCoroutine(ReactExpression(timeForReactionExpression, SetSprite.SpriteState.happyExpression)); audioSource.clip = correctSound; audioSource.Play(); } else { StartCoroutine(ReactExpression(timeForReactionExpression, SetSprite.SpriteState.angryExpression)); audioSource.clip = wrongSound; audioSource.Play(); } CheckInput.didPoints = false;//these just need to be reset afterwords CheckInput.InputIsCorrect = 0; CheckInput.restingAfterCorrect = false; }