void SpinForms(float t = 0f)
    {
        float speed = 0.4f;

        previewForm.transform.position = Vector3.MoveTowards(previewForm.transform.position, formSpawner.transform.position, speed);
        previewShadow.position = Vector3.MoveTowards(previewShadow.position, shadowSpawner.transform.position, speed);

        currentForm.transform.position = Vector3.MoveTowards(currentForm.transform.position, lastShadowSpawner.transform.position, speed);
        currentShadow.transform.position = Vector3.MoveTowards(currentShadow.transform.position, lastShadowSpawner.transform.position, speed);

        if (previewForm.transform.localScale.x < 1){
            previewForm.transform.localScale += Vector3.one * (speed/10);
            previewShadow.localScale += Vector3.one * (speed/10);
            currentForm.transform.localScale -= Vector3.one * (speed/5);
            currentShadow.localScale -= Vector3.one * (speed/5);
        }
        else{
            //move as antigas forma e sombra
            Destroy(currentForm.gameObject);
            Destroy(currentShadow.gameObject);

            currentForm = previewForm;
            currentShadow = previewShadow;

            timerAccretionScale = currentForm.getBaseTimeAccretion () / (fitOffset * 2);
            CreatePreviews();

            isSpinning = false;
        }
    }
    //antigo StartNewForms(), mas agora só roda uma vez (até dá pra juntar com a SpinForms, mas preguiça)
    void StartForms()
    {
        previewSpawner.GetComponent<Renderer>().enabled = true;
        shadowPreviewSpawner.GetComponent<Renderer>().enabled = true;

        int index = Random.Range(0, forms.Length - 3);
        GameObject form = (GameObject) Instantiate(forms[index].form, formSpawner.position, Quaternion.identity);
        GameObject shadow = (GameObject) Instantiate(forms[index].shadow, shadowSpawner.position, Quaternion.identity);

        currentForm = form.GetComponent<Form>();
        currentShadow = shadow.transform;

        float maxAngle = currentForm.getMaxAngle();
        Vector3 rot = Vector3.zero;
        int normalizedAngle = (int) (maxAngle / rotationSpeed);    //O angulo é normalizado para ser múltiplo
        rot.z = Random.Range(-normalizedAngle, normalizedAngle) * rotationSpeed; //da velocidade de rotação
        currentShadow.Rotate(rot);

        currentForm.GetComponent<SpriteRenderer>().color = RandColor();
        timerAccretionScale = currentForm.getBaseTimeAccretion () / (fitOffset * 2);

        CreatePreviews();
    }
    private void CreatePlayButtonForm()
    {
        GameObject form = (GameObject)Instantiate(playForm.form, playButtonSpawner.position, Quaternion.identity);
        GameObject shadow = (GameObject)Instantiate(playForm.shadow, shadowSpawner.position, Quaternion.identity);
        currentForm = form.GetComponent<Form>();
        currentShadow = shadow.transform;

        float maxAngle = currentForm.getMaxAngle();
        Vector3 rot = Vector3.zero;
        int normalizedAngle = (int)(maxAngle / rotationSpeed);    //O angulo é normalizado para ser múltiplo
        rot.z = Random.Range(-normalizedAngle, normalizedAngle) * rotationSpeed; //da velocidade de rotação
        currentShadow.Rotate(rot);

        timerAccretionScale = currentForm.getBaseTimeAccretion() / (fitOffset * 2);
    }