Example #1
0
    // This coroutine checks once the disk stops moving
    // the results and determines whether the problem was solved successfully.
    IEnumerator ShowResults()
    {
        var    solution   = fsolver.FindSolution();
        float  response   = 0f;
        string curr_scene = SceneManager.GetActiveScene().name;

        if (curr_scene == "FDistance")
        {
            response = float.Parse(fim.distanceInput.text);
        }
        else if (curr_scene == "FIV")
        {
            response = float.Parse(fim.ivInput.text);
        }
        else if (curr_scene == "Friction")
        {
            response = float.Parse(fim.frictionInput.text);
        }

        // We wait 2 seconds so user can see it stopped.
        yield return(new WaitForSeconds(1));

        var   wideTarget  = GameObject.Find("Target/Outer Circle");
        float targetWidth = wideTarget.GetComponent <SpriteRenderer>().sprite.bounds.size.x;
        var   diskPos     = transform.position.x;
        var   targetPos   = target.transform.position.x;

        Debug.Log((Math.Abs(response - solution)));
        if ((Math.Abs(response - solution) < 0.01f))
        {
            sceneLoader.LoadScene("Win Screen");
        }

        else if (targetPos - targetWidth / 2 < diskPos & targetPos + targetWidth / 2 > diskPos)
        {
            sceneLoader.LoadScene("Improve Accuracy");
        }
        else
        {
            sceneLoader.LoadScene("Missed Screen");
        }
    }