void Update() { if (isRoll) { velocity = Mathf.MoveTowards(velocity, 0, Time.deltaTime * speedRoll); casePanel.transform.Translate(new Vector2(velocity, 0) * Time.deltaTime / 5); if (velocity == 0) { isRoll = false; RaycastHit2D hit = Physics2D.Raycast(center.position, Vector3.forward); if (hit) { if (hit.collider.tag == "Finish") { result = hit.collider.GetComponent <CaseHolder>(); StopAllCoroutines(); ShowPrizePanel(); } else { velocity = -2f; isRoll = true; } } } } }
IEnumerator Prize() { Skin newSkin = GenerateSkin(); shop.inventory.skins.Add(newSkin); AudioSource audio = prizePanel.GetComponent <AudioSource>(); GameObject chest = prizePanel.Find("ImageSkin").gameObject; chest.GetComponent <Button>().interactable = false; Vector2 pos = chest.transform.localPosition; for (int i = 0; i < 50; i++) { float x = pos.x + Random.value * 4; float y = pos.y + Random.value * 3; chest.transform.localPosition = new Vector2(x, y); yield return(new WaitForSeconds(0.05f)); } chest.transform.localPosition = pos; chest.GetComponent <Image>().sprite = result.spriteOp; audio.Play(); yield return(new WaitForSeconds(1)); prizePanel.Find("Effect").gameObject.SetActive(true); float scale = chest.transform.localScale.x; for (; chest.transform.localScale.x > 0;) { chest.transform.localScale -= Vector3.one * Time.deltaTime * 10; yield return(new WaitForFixedUpdate()); } chest.GetComponent <Image>().sprite = newSkin.sprite; for (; chest.transform.localScale.x < scale;) { chest.transform.localScale += Vector3.one * Time.deltaTime * 10; yield return(new WaitForFixedUpdate()); } prizePanel.Find("Rarity").GetComponent <Text>().text = newSkin.rarity.ToString(); prizePanel.Find("skinName").GetComponent <Text>().text = newSkin.name; chest.GetComponent <Button>().interactable = true; canClosePrize = true; result = null; }