private void PlayerGo(GameManager.MoveSide moveSide, bool swap)
    {
        if (isColor)
        {
            if (GameManager.Instance.playerColor == GameManager.Colors.Blue)
            {
                mesh.material.color = new Color(0, 0, 1);
                light.color         = new Color(0, 0, 1);
            }
            else if (GameManager.Instance.playerColor == GameManager.Colors.Red)
            {
                mesh.material.color = new Color(1, 0, 0);
                light.color         = new Color(1, 0, 0);
            }
            else if (GameManager.Instance.playerColor == GameManager.Colors.Green)
            {
                mesh.material.color = new Color(0, 1, 0);
                light.color         = new Color(0, 1, 0);
            }

            isColor = false;
        }


        for (int i = 0; i < GameManager.Instance.sphereSwap.Count; i++)
        {
            if (GameManager.Instance.sphereSwap[i] == true)
            {
                colorToChange = GameManager.Instance.sphereColor[i];
            }
        }


        StartCoroutine(MoveTo(moveSide, swap));
    }
Exemple #2
0
    private void SphereGo(Transform sphere, GameManager.MoveSide moveSide, bool swap, int numInList)
    {
        if (gameObject.transform != sphere)
        {
            return;
        }

        if (isColor)
        {
            if (GameManager.Instance.sphereColor[numInList] == GameManager.Colors.Blue)
            {
                mesh.material.color = new Color(0, 0, 1);
                light.color         = new Color(0, 0, 1);
            }
            else if (GameManager.Instance.sphereColor[numInList] == GameManager.Colors.Red)
            {
                mesh.material.color = new Color(1, 0, 0);
                light.color         = new Color(1, 0, 0);
            }
            else if (GameManager.Instance.sphereColor[numInList] == GameManager.Colors.Green)
            {
                mesh.material.color = new Color(0, 1, 0);
                light.color         = new Color(0, 1, 0);
            }

            isColor = false;
        }

        if (swap && GameManager.Instance.playerColor == GameManager.Colors.Blue)
        {
            colorToChange = GameManager.Colors.Blue;
        }
        else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Red)
        {
            colorToChange = GameManager.Colors.Red;
        }
        else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Green)
        {
            colorToChange = GameManager.Colors.Green;
        }

        GameManager.Instance.sphereList[numInList] = transform;
        StartCoroutine(MoveTo(sphere, moveSide, swap, numInList));
    }
    private IEnumerator MoveTo(GameManager.MoveSide moveSide, bool swap)
    {
        //Debug.Log(swap + " player");

        Vector3 startPosition  = transform.position;
        Vector3 spherePosition = Vector3.zero;
        Vector3 pointPosition  = Vector3.zero;

        float alpha = 0;
        float beta  = -90;

        if (moveSide == GameManager.MoveSide.Up)
        {
            spherePosition = new Vector3(startPosition.x, transform.localScale.y / 2, startPosition.z + GameManager.Instance.stepBetweenGround.y);
            GameManager.Instance.playerPosOnGrid.x += 2;
        }
        else if (moveSide == GameManager.MoveSide.Down)
        {
            spherePosition = new Vector3(startPosition.x, transform.localScale.y / 2, startPosition.z - GameManager.Instance.stepBetweenGround.y);
            GameManager.Instance.playerPosOnGrid.x -= 2;
        }
        else if (moveSide == GameManager.MoveSide.Right)
        {
            spherePosition = new Vector3(startPosition.x + GameManager.Instance.stepBetweenGround.x, transform.localScale.y / 2, startPosition.z);
            alpha          = 90;
            GameManager.Instance.playerPosOnGrid.y += 2;
        }
        else if (moveSide == GameManager.MoveSide.Left)
        {
            spherePosition = new Vector3(startPosition.x - GameManager.Instance.stepBetweenGround.x, transform.localScale.y / 2, startPosition.z);
            alpha          = 90;
            GameManager.Instance.playerPosOnGrid.y -= 2;
        }


        float alphaRad = 0, betaRad = 0;
        float radius = GameManager.Instance.stepBetweenGround.x;

        float progress = 0;
        float speed    = 3f;

        float red = 0, green = 0, blue = 0;

        while (progress < 1)
        {
            yield return(new WaitForFixedUpdate());

            if (moveSide == GameManager.MoveSide.Up)
            {
                alpha    = 180 * progress;
                alphaRad = Mathf.Deg2Rad * (180 + alpha);
                if (alpha > 177)
                {
                    alphaRad = Mathf.Deg2Rad * (360);
                }
                betaRad = Mathf.Deg2Rad * beta;
            }
            else if (moveSide == GameManager.MoveSide.Down)
            {
                alpha    = 180 * progress;
                alphaRad = Mathf.Deg2Rad * (-alpha);
                if (alpha > 177)
                {
                    alphaRad = Mathf.Deg2Rad * (-180);
                }
                betaRad = Mathf.Deg2Rad * beta;
            }
            else if (moveSide == GameManager.MoveSide.Left)
            {
                beta     = 180 * progress;
                alphaRad = Mathf.Deg2Rad * (alpha);
                betaRad  = Mathf.Deg2Rad * (beta);
                if (beta > 177)
                {
                    betaRad = Mathf.Deg2Rad * (180);
                }
            }
            else if (moveSide == GameManager.MoveSide.Right)
            {
                beta     = 180 * progress;
                alphaRad = Mathf.Deg2Rad * (alpha);
                betaRad  = Mathf.Deg2Rad * (180 - beta);
                if (beta > 177)
                {
                    betaRad = Mathf.Deg2Rad * (0);
                }
            }

            pointPosition.x = spherePosition.x + radius * Mathf.Sin(alphaRad) * Mathf.Cos(betaRad);
            pointPosition.y = spherePosition.y + radius * Mathf.Sin(alphaRad) * Mathf.Sin(betaRad);
            pointPosition.z = spherePosition.z + radius * Mathf.Cos(alphaRad);

            transform.position = pointPosition;

            if (swap && GameManager.Instance.playerColor == GameManager.Colors.Red && colorToChange == GameManager.Colors.Blue)
            {
                red   = Mathf.Lerp(1f, 0f, progress);
                blue  = Mathf.Lerp(0f, 1f, progress);
                green = 0;
                mesh.material.color = new Color(red, green, blue);
                light.color         = new Color(red, green, blue);
                Time.timeScale      = 0.2f;
            }
            else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Blue && colorToChange == GameManager.Colors.Red)
            {
                red   = Mathf.Lerp(0f, 1f, progress);
                blue  = Mathf.Lerp(1f, 0f, progress);
                green = 0;
                mesh.material.color = new Color(red, green, blue);
                light.color         = new Color(red, green, blue);
                Time.timeScale      = 0.2f;
            }
            else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Blue && colorToChange == GameManager.Colors.Green)
            {
                red   = 0;
                blue  = Mathf.Lerp(1f, 0f, progress);
                green = Mathf.Lerp(0f, 1f, progress);
                mesh.material.color = new Color(red, green, blue);
                light.color         = new Color(red, green, blue);
                Time.timeScale      = 0.2f;
            }
            else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Red && colorToChange == GameManager.Colors.Green)
            {
                red   = Mathf.Lerp(1f, 0f, progress);
                blue  = 0;
                green = Mathf.Lerp(0f, 1f, progress);
                mesh.material.color = new Color(red, green, blue);
                light.color         = new Color(red, green, blue);
                Time.timeScale      = 0.2f;
            }
            else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Green && colorToChange == GameManager.Colors.Blue)
            {
                red   = 0;
                blue  = Mathf.Lerp(0f, 1f, progress);
                green = Mathf.Lerp(1f, 0f, progress);
                mesh.material.color = new Color(red, green, blue);
                light.color         = new Color(red, green, blue);
                Time.timeScale      = 0.2f;
            }
            else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Green && colorToChange == GameManager.Colors.Red)
            {
                red   = Mathf.Lerp(0f, 1f, progress);
                blue  = 0;
                green = Mathf.Lerp(1f, 0f, progress);
                mesh.material.color = new Color(red, green, blue);
                light.color         = new Color(red, green, blue);
                Time.timeScale      = 0.2f;
            }
            else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Red && colorToChange == GameManager.Colors.Red)
            {
                Time.timeScale = 0.2f;
            }
            else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Green && colorToChange == GameManager.Colors.Green)
            {
                Time.timeScale = 0.2f;
            }
            else if (swap && GameManager.Instance.playerColor == GameManager.Colors.Blue && colorToChange == GameManager.Colors.Blue)
            {
                Time.timeScale = 0.2f;
            }

            progress += Time.fixedDeltaTime * speed;
        }

        Time.timeScale = 1f;

        if (swap && colorToChange == GameManager.Colors.Red)
        {
            GameManager.Instance.playerColor = GameManager.Colors.Red;
        }
        else if (swap && colorToChange == GameManager.Colors.Blue)
        {
            GameManager.Instance.playerColor = GameManager.Colors.Blue;
        }
        else if (swap && colorToChange == GameManager.Colors.Green)
        {
            GameManager.Instance.playerColor = GameManager.Colors.Green;
        }
    }