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); }