// Called when an object enters the collider of another object // Set the target object as the trigger void OnTriggerEnter2D(Collider2D other) { // if the current scene is Learn Spelling if (Application.loadedLevelName == "4. Learn Spelling") { // if the collided objects are the same letter // i.e. if the movable letter that entered matches the target letter if (other.name == gameObject.name) { Debug.Log("Collision on " + other.name); // change color of target letter to match that of movable letter gameObject.GetComponent <SpriteRenderer> ().color = other.GetComponent <SpriteRenderer> ().color; Color color = gameObject.renderer.material.color; color.a = 1.0f; gameObject.renderer.material.color = color; // destroy movable letter Debug.Log("Destroyed draggable letter " + other.gameObject.name); Destroy(other.gameObject); // disable collisions for target letter // so all other movable letters can no longer collide with this letter Debug.Log("Disabled collisions for " + gameObject.name); Destroy(gameObject.GetComponent <CollisionManager>()); // pulse target letter once LeanTween.scale(gameObject, new Vector3(WordCreation.letterScale * 1.2f, WordCreation.letterScale * 1.2f, 1), .6f); LeanTween.scale(gameObject, new Vector3(WordCreation.letterScale, WordCreation.letterScale, 1), .5f).setDelay(.4f); // check if user has completed word if (CheckCompletedWord()) { // sound out the word GameObject[] tar = GameObject.FindGameObjectsWithTag("TargetLetter"); GameObject audioManager = GameObject.Find("AudioManager"); audioManager.GetComponent <AudioManager>().SpellOutWord(tar); // play celebratory animation LearnSpellingDirector.CelebratoryAnimation((tar.Length + 1.5f) * AudioManager.clipLength); // add word to completedWord list ProgressManager.AddCompletedWord(ProgressManager.currentWord); } } } // if the current scene is Spelling Game if (Application.loadedLevelName == "5. Spelling Game") { Debug.Log("Collision on " + other.name); // disable touch gestures for letter other.gameObject.GetComponent <GestureManager>().DisableGestures(other.gameObject); // stop pulsing letter other.gameObject.GetComponent <PulseBehavior>().StopPulsing(other.gameObject); // move letter to center of target blank // z-position of letter = -1, so letter is in front of the blank (z-position of blank = 0) other.gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, -1); // change color of letter to indicate collision succesfully occurred other.gameObject.GetComponent <SpriteRenderer>().color = Color.blue; // pulse letter once LeanTween.scale(other.gameObject, new Vector3(WordCreation.letterScale * 1.25f, WordCreation.letterScale * 1.25f, 1), .3f); LeanTween.scale(other.gameObject, new Vector3(WordCreation.letterScale, WordCreation.letterScale, 1), .3f).setDelay(.2f); // disable collisions for target blank // so no other movable letters can collide with this blank anymore Debug.Log("Disabled collisions for Blank " + gameObject.name); Destroy(gameObject.GetComponent <CollisionManager>()); // if all letters have been dragged to a blank if (CheckCompletedTargets("MovableLetter")) { // if the user spelled the word correctly if (CheckCorrectSpelling("TargetBlank")) { // find all movable letters GameObject[] mov = GameObject.FindGameObjectsWithTag("MovableLetter"); // disable touch gestures for sound & hint buttons GameObject.Find("SoundButton").GetComponent <GestureManager>().DisableGestures(GameObject.Find("SoundButton")); GameObject.Find("HintButton").GetComponent <GestureManager>().DisableGestures(GameObject.Find("HintButton")); // mark all correct letters by changing their colors MarkCorrectLetters(0f); // sound out the word SpellingGameDirector.SpellOutWord(); // play celebratory animation SpellingGameDirector.CelebratoryAnimation((mov.Length + 1.5f) * AudioManager.clipLength); // add word to completedWord list ProgressManager.AddCompletedWord(ProgressManager.currentWord); } // if user spelled word incorrectly if (!CheckCorrectSpelling("TargetBlank")) { // play try again animation SpellingGameDirector.TryAgainAnimation(); // mark the correct letters by changing their color MarkCorrectLetters(1f); // move incorrect letters back to original position ResetIncorrectLetters(1f); // play word's sound GameObject.FindGameObjectWithTag("WordObject").audio.PlayDelayed(1f); // flash hint button to call attention to it FlashHintButton(2f); } } } // if current scene is Sound Game if (Application.loadedLevelName == "6. Sound Game") { Debug.Log("Collision on " + other.name); // disable touch gestures for sound blank other.gameObject.GetComponent <GestureManager> ().DisableGestures(other.gameObject); // stop pulsing sound blank other.gameObject.GetComponent <PulseBehavior> ().StopPulsing(other.gameObject); // place sound blank at opening of jar other.gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y + 2.2f, 1); // pulse sound blank once LeanTween.scale(other.gameObject, new Vector3(.4f, .4f, 1), .3f); LeanTween.scale(other.gameObject, new Vector3(.3f, .3f, 1), .3f).setDelay(.2f); // change color of jar to match color of sound blank // to indicate successful collision Color color = other.gameObject.GetComponent <SpriteRenderer>().color; Vector2 posn = gameObject.transform.position; Collider2D[] jar = Physics2D.OverlapCircleAll(posn, .1f, 1, 1.5f, 1.5f); LeanTween.color(jar[0].gameObject, color, .01f); // disable collisions for target letter Debug.Log("Disabled collisions for Letter " + gameObject.name); Destroy(gameObject.GetComponent <CollisionManager> ()); // if all sound blanks have been dragged onto a jar if (CheckCompletedTargets("MovableBlank")) { // if user dragged all sound blanks to their correct corresponding letters if (CheckCorrectSpelling("TargetLetter")) { // find all sound blanks GameObject[] mov = GameObject.FindGameObjectsWithTag("MovableBlank"); // disable touch gestures for sound + hint buttons GameObject.Find("SoundButton").GetComponent <GestureManager> ().DisableGestures(GameObject.Find("SoundButton")); GameObject.Find("HintButton").GetComponent <GestureManager> ().DisableGestures(GameObject.Find("HintButton")); // reset correct sound blanks back to original size MarkCorrectSounds(0f); // sound out word GameObject[] tar = GameObject.FindGameObjectsWithTag("TargetLetter"); GameObject audioManager = GameObject.Find("AudioManager"); audioManager.GetComponent <AudioManager>().SpellOutWord(tar); // play celebratory animation SoundGameDirector.CelebratoryAnimation((mov.Length + 1.5f) * AudioManager.clipLength); // add completed word to completedWord list ProgressManager.AddCompletedWord(ProgressManager.currentWord); } // if user did not drag all sound blanks to correct letter if (!CheckCorrectSpelling("TargetLetter")) { // play try again animation SoundGameDirector.TryAgainAnimation(); // reset correct sound blanks back to original size MarkCorrectSounds(1f); // move incorrect sound blanks back to original position ResetIncorrectSounds(1f); // play word's sound GameObject.FindGameObjectWithTag("WordObject").audio.PlayDelayed(1f); // flash hint button to call attention to it FlashHintButton(2f); } } } }
//<summary> // Called when an object enters the collider of another object // Set the target object as the trigger //</summary> void OnTriggerEnter2D(Collider2D other) { GestureManager gestureManager = GameObject. FindGameObjectWithTag(Constants.Tags.TAG_GESTURE_MANAGER).GetComponent <GestureManager>(); if (gestureManager != null) { // if the current scene is Learn Spelling if (Application.loadedLevelName == "4. Learn Spelling") { // if the collided objects are the same letter // i.e. if the movable letter that entered matches the target letter if (other.name == gameObject.name) { Debug.Log("Collision on " + other.name); // change color of target letter to match that of movable letter gameObject.GetComponent <SpriteRenderer>().color = other.GetComponent <SpriteRenderer>() .color; Color color = gameObject.GetComponent <Renderer>().material.color; color.a = 1.0f; gameObject.GetComponent <Renderer>().material.color = color; // destroy movable letter Debug.Log("Destroyed draggable letter " + other.gameObject.name); Destroy(other.gameObject); // disable collisions for target letter // so all other movable letters can no longer collide with this letter Debug.Log("Disabled collisions for " + gameObject.name); Destroy(gameObject.GetComponent <CollisionManager>()); // pulse target letter once LeanTween.scale(gameObject, new Vector3(WordCreation.letterScale * 1.2f, WordCreation.letterScale * 1.2f, 1), .6f); LeanTween.scale(gameObject, new Vector3(WordCreation.letterScale, WordCreation.letterScale, 1), .5f).setDelay(.4f); // check if user has completed word if (CheckCompletedWord()) { // sound out the word GameObject[] tar = GameObject.FindGameObjectsWithTag (Constants.Tags.TAG_TARGET_LETTER); GameObject audioManager = GameObject.Find("AudioManager"); if (audioManager != null) { audioManager.GetComponent <AudioManager>().SpellOutWord(tar); // play celebratory animation LearnSpellingDirector.CelebratoryAnimation((tar.Length + 1.5f) * AudioManager.clipLength); // add word to completedWord list ProgressManager.AddCompletedWord(ProgressManager.currentWord); } else { Debug.LogError("Cannot find audio manager"); } } } } //only want to get these components if on the spelling or sound game if (Application.loadedLevelName != "4. Learn Spelling") { //get properties component Properties prop = other.gameObject.GetComponent <Properties>(); //We track whether or not letters have been dragged into the right spots using this isinblank flag, //which is set to true when the letter is in the right place. //only change the flag if the gameObject has a properties component if (prop != null) { prop.isinblank = true; } else { Debug.LogError("Properties are not attached"); } //check if word is spelled correctly if (other.name == gameObject.name) { prop.iscorrect = true; } // if the current scene is Spelling Game if (Application.loadedLevelName == "5. Spelling Game") { Debug.Log("Collision on " + other.name); // stop pulsing letter other.gameObject.GetComponent <PulseBehavior>().StopPulsing(other.gameObject); // move letter to center of target blank // z-position of letter = -1, so letter is in front of the blank (z-position of blank = 0) other.gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, -1); // change color of letter to indicate collision succesfully occurred other.gameObject.GetComponent <SpriteRenderer>().color = Color.blue; Debug.Log("I changed my color"); // pulse letter once LeanTween.scale(other.gameObject, new Vector3(WordCreation.letterScale * 1.25f, WordCreation.letterScale * 1.25f, 1), .3f); LeanTween.scale(other.gameObject, new Vector3(WordCreation.letterScale, WordCreation.letterScale, 1), .3f).setDelay(.2f); // disable collisions for target blank // so no other movable letters can collide with this blank anymore Debug.Log("Disabled collisions for Blank " + gameObject.name); Destroy(gameObject.GetComponent <CollisionManager>()); // if all letters have been dragged to a blank if (CheckCompletedTargets(Constants.Tags.TAG_MOVABLE_LETTER)) { // if user spelled word incorrectly if (!CheckCorrectSpelling(Constants.Tags.TAG_MOVABLE_LETTER)) { // play try again animation SpellingGameDirector.TryAgainAnimation(); // mark the correct letters by changing their color MarkCorrectLetters(1f); // move incorrect letters back to original position ResetIncorrectLetters(1f); // play word's sound GameObject.FindGameObjectWithTag(Constants.Tags.TAG_WORD_OBJECT). GetComponent <AudioSource>().PlayDelayed(1f); // flash hint button to call attention to it FlashHintButton(2f); } // if the user spelled the word correctly else { // find all movable letters GameObject[] mov = GameObject.FindGameObjectsWithTag (Constants.Tags.TAG_MOVABLE_LETTER); // disable touch gestures for sound & hint buttons gestureManager.DisableGestures(GameObject.Find("SoundButton")); gestureManager.GetComponent <GestureManager>().DisableGestures(GameObject.Find ("HintButton")); // mark all correct letters by changing their colors MarkCorrectLetters(0f); // sound out the word SpellingGameDirector.SpellOutWord(); // play celebratory animation SpellingGameDirector.CelebratoryAnimation((mov.Length + 1.5f) * AudioManager.clipLength); // add word to completedWord list ProgressManager.AddCompletedWord(ProgressManager.currentWord); //reset letters in case user wants to play again on the same screen foreach (GameObject letter in mov) { letter.GetComponent <Properties>().isinblank = false; letter.GetComponent <Properties>().iscorrect = false; } } } } // if current scene is Sound Game if (Application.loadedLevelName == "6. Sound Game") { Debug.Log("Collision on " + other.name); // stop pulsing sound blank other.gameObject.GetComponent <PulseBehavior>().StopPulsing(other.gameObject); // place sound blank at opening of jar other.gameObject.transform.position = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y + 2.2f, 1); // pulse sound blank once LeanTween.scale(other.gameObject, new Vector3(.4f, .4f, 1), .3f); LeanTween.scale(other.gameObject, new Vector3(.3f, .3f, 1), .3f).setDelay(.2f); // change color of jar to match color of sound blank // to indicate successful collision Color color = other.gameObject.GetComponent <SpriteRenderer>().color; Vector2 posn = gameObject.transform.position; Collider2D[] jar = Physics2D.OverlapCircleAll(posn, .1f, 1, 1.5f, 0f); LeanTween.color(jar[0].gameObject, color, .01f); // disable collisions for target letter Debug.Log("Disabled collisions for Letter " + gameObject.name); Destroy(gameObject.GetComponent <CollisionManager>()); // if all sound blanks have been dragged onto a jar if (CheckCompletedTargets(Constants.Tags.TAG_MOVABLE_BLANK)) { // if user did not drag all sound blanks to correct letter if (!CheckCorrectSpelling(Constants.Tags.TAG_MOVABLE_BLANK)) { // play try again animation SoundGameDirector.TryAgainAnimation(); // reset correct sound blanks back to original size MarkCorrectSounds(1f); // move incorrect sound blanks back to original position ResetIncorrectSounds(1f); // play word's sound GameObject.FindGameObjectWithTag(Constants.Tags.TAG_WORD_OBJECT). GetComponent <AudioSource>().PlayDelayed(1f); // flash hint button to call attention to it FlashHintButton(2f); } // if user dragged all sound blanks to their correct corresponding letters else { // find all sound blanks GameObject[] mov = GameObject.FindGameObjectsWithTag (Constants.Tags.TAG_MOVABLE_BLANK); // disable touch gestures for sound + hint buttons gestureManager.DisableGestures(GameObject.Find("SoundButton")); gestureManager.DisableGestures(GameObject.Find("HintButton")); // reset correct sound blanks back to original size MarkCorrectSounds(0f); // sound out word GameObject[] tar = GameObject.FindGameObjectsWithTag (Constants.Tags.TAG_TARGET_LETTER); GameObject audioManager = GameObject.Find("AudioManager"); audioManager.GetComponent <AudioManager>().SpellOutWord(tar); // play celebratory animation SoundGameDirector.CelebratoryAnimation((mov.Length + 1.5f) * AudioManager.clipLength); // add completed word to completedWord list ProgressManager.AddCompletedWord(ProgressManager.currentWord); //reset letters in case user wants to play again on the same screen //or user wants to listen to the sounds foreach (GameObject letter in mov) { letter.GetComponent <Properties>().isinblank = false; letter.GetComponent <Properties>().iscorrect = false; } } } } } } else { Debug.LogError("Cannot find gesture manager"); } }