IEnumerator IE_getEnergy() { isNone = true; Halo.SetActive(true); Halo.transform.parent = null; Halo.GetComponent <TrailRenderer>().enabled = true; //第一段动画 { float _time0 = 0; Vector3 _dir = Halo.transform.position - CharacterControl.instance.transform.position; Vector3 _dir_2 = Vector3.Cross(_dir, Vector3.back); _dir.z = 0; Vector3 p1, p2; p1 = Halo.transform.position + _dir * 0.9f; p2 = (CharacterControl.instance.transform.position + Halo.transform.position) / 2.0f + _dir_2 * 0.8f; p1.z = 0; p2.z = 0; while (_time0 < first_animation_duration) { _time0 += Time.deltaTime; float t = _time0 / first_animation_duration; Halo.transform.position = GameFunction.BezierLine(Halo.transform.position, CharacterControl.instance.transform.position + Vector3.up * 1, p1, p2, t); yield return(null); } } //第二段动画 { Energy.SetActive(false); float _time0 = 0; Vector3 originScale_Halo = Halo.transform.localScale; SpriteRenderer SR_BG = BG.GetComponent <SpriteRenderer>(); Color originColor_BG = SR_BG.color; SpriteRenderer SR_Stone = Stone.GetComponent <SpriteRenderer>(); Color originColor_Stone = SR_Stone.color; SpriteRenderer SR_Halo = Halo.GetComponent <SpriteRenderer>(); while (_time0 < second_animation_duration) { _time0 += Time.deltaTime; float t = _time0 / second_animation_duration; Halo.transform.localScale = Vector3.Lerp(originScale_Halo, Vector3.one * 10f, t); SR_Halo.color = Color.Lerp(SR_Halo.color, new Color(1, 1, 1, 0), t); SR_BG.color = Color.Lerp(originColor_BG, Color.black, t); SR_Stone.color = Color.Lerp(originColor_Stone, Color.black, t); yield return(null); } SR_BG.sortingOrder = 0; Stone.SetActive(false); Halo.SetActive(false); Particle.SetActive(false); } Bag.getInstance().AddArmsFragment(1); }
IEnumerator IE_openNewGroove(int GrooveID) { //第一段动画 { for (int i = 0; i < Frags.Length; i++) { Frags[i].SetActive(true); } float _time0 = 0; Vector3 originScale_FragIcon = Frag_icon.transform.localScale; Vector3[] originPos_Frags = new Vector3[Frags.Length]; Vector3 _dir, _dir_2; Vector3 p1; Vector3[] p2 = new Vector3[Frags.Length]; _dir = Frags[0].transform.position - Gem[GrooveID].transform.position; _dir_2 = Vector3.Cross(_dir, Vector3.back); p1 = Frags[0].transform.position + _dir * 0.5f; for (int i = 0; i < Frags.Length; i++) { p2[i] = Frags[0].transform.position + _dir_2 * (0.5f - i * 0.1f) * (i % 2 == 0 ? 1 : -1); originPos_Frags[i] = Frags[i].transform.position; } updateArmsFragNum(); while (_time0 < openGroove_first_animation_duration) { _time0 += Time.deltaTime; float t = _time0 / openGroove_first_animation_duration; Frag_icon.transform.localScale = Vector3.Lerp(Vector3.one * 0.5f, originScale_FragIcon, t * 8); for (int i = 0; i < Frags.Length; i++) { Frags[i].transform.position = GameFunction.BezierLine(originPos_Frags[i], Gem[GrooveID].transform.position, p1, p2[i], t); } yield return(null); } } for (int i = 1; i < Frags.Length; i++) { Frags[i].SetActive(false); Frags[i].transform.position = Frag_icon.transform.position; } //第二段动画 { Frags[0].GetComponent <TrailRenderer>().enabled = false; Frags[0].transform.GetChild(0).gameObject.SetActive(false); float _time0 = 0; Image img_frag = Frags[0].GetComponent <Image>(); Color originColor_frag = img_frag.color; Vector3 originScale_Frag = Frags[0].transform.localScale; bool isUpdate = false; while (_time0 < openGroove_second_animation_duration) { _time0 += Time.deltaTime; float t = _time0 / openGroove_second_animation_duration; Frags[0].transform.localScale = Vector3.Lerp(originScale_Frag, Vector3.one * 33f, t); img_frag.color = Color.Lerp(originColor_frag, originColor_frag * GameFunction.Transparent, t); if (!isUpdate && _time0 > 0.3f * openGroove_second_animation_duration) { GemGroove[GrooveID].GetComponent <Image>().color = Color.white; //更新显示 GemGroove_Disable[GrooveID].gameObject.SetActive(false); GemGroove_None[GrooveID].gameObject.SetActive(true); } yield return(null); } Frags[0].GetComponent <TrailRenderer>().enabled = true; Frags[0].transform.localScale = originScale_Frag; Frags[0].transform.position = Frag_icon.transform.position; img_frag.color = originColor_frag; Frags[0].SetActive(false); Frags[0].transform.GetChild(0).gameObject.SetActive(true); } }