//画线 private void setLine(GoddessAstrolabeStarCtrl _gas) { GoddessAstrolabeSample ss = _gas.getInfo(); if (ss.father == 0 || !GoddessAstrolabeManagerment.Instance.getFatherStarIsOpen(ss)) { return; } if (getFatherStar(ss.father) != null) { if (_gas.getInfo().mainType == 1) { LineRenderer renderActive = (Instantiate(lineActive) as GameObject).GetComponent <LineRenderer> (); renderActive.transform.parent = _gas.transform; renderActive.SetPosition(0, _gas.getPos()); renderActive.SetPosition(1, getFatherStar(ss.father).getPos()); renderActive.enabled = true; } else { LineRenderer renderNotActive = (Instantiate(lineNotActive) as GameObject).GetComponent <LineRenderer> (); renderNotActive.transform.parent = _gas.transform; renderNotActive.SetPosition(0, _gas.getPos()); renderNotActive.SetPosition(1, getFatherStar(ss.father).getPos()); renderNotActive.enabled = true; } } }
private void findStar() { lookType = 1; Vector3 pos; List <Vector3> list = getStarPos(); if (list == null || list.Count <= 0) { //没有可激活星星时定位到最后一颗 if (stars != null && stars.Count > 0) { GoddessAstrolabeStarCtrl a = null; for (int i = 0; i < stars.Count; i++) { if (stars[i].getInfo().id == GoddessAstrolabeManagerment.Instance.getLastStarIdById(nebulaId)) { a = stars[i]; } } if (a == null) { pos = new Vector3(stars[0].getPos().x, stars[0].getPos().y, (stars[0].getPos().y *zByZPer - zByZPer2)); } else { pos = new Vector3(a.getPos().x, a.getPos().y, (a.getPos().y *zByZPer - zByZPer2)); } } else { pos = new Vector3(0, 0, -5); } } else { if (lookingId >= list.Count - 1) { lookingId = 0; } else { lookingId++; } pos = new Vector3(list[lookingId].x, list[lookingId].y, (list[lookingId].y * zByZPer - zByZPer2)); } // gaCamera.transform.localRotation = new Quaternion(0,0,0,0); iTween.MoveTo(gaCamera.gameObject, iTween.Hash("position", pos, "easetype", iTween.EaseType.easeInOutCubic, "oncomplete", "over", "time", 0.3f)); }
//获得下一颗可激活主星的坐标,如果没有,就回去原点 private void getStarPosByMainType() { if (stars == null) { return; } bool isHave = false; Vector3 pos = new Vector3(0, 0, -5); GoddessAstrolabeStarCtrl a = null; for (int i = 0; i < stars.Count; i++) { if (stars[i].getInfo().id == GoddessAstrolabeManagerment.Instance.getLastStarIdById(nebulaId)) { a = stars[i]; } if (stars[i].getInfo().mainType == 1) { GoddessAstrolabeSample ss = stars[i].getInfo(); if (!GoddessAstrolabeManagerment.Instance.getFatherStarIsOpen(ss)) { continue; } else { if (stars[i].getInfo().isOpen) { continue; } else { isHave = true; pos = new Vector3(stars[i].getPos().x, stars[i].getPos().y, (stars[i].getPos().y *zByZPer - zByZPer2)); break; } } } } if (!isHave) { findStar(); } else { // gaCamera.transform.localRotation = new Quaternion(0,0,0,0); iTween.MoveTo(gaCamera.gameObject, iTween.Hash("position", pos, "easetype", iTween.EaseType.easeInOutCubic, "oncomplete", "over", "time", 0.3f)); } }
//填充星空 private void creatStar() { if (infoByFront == null) { return; } stars = new List <GoddessAstrolabeStarCtrl>(); for (int i = 0; i < infoByFront.Count; i++) { GameObject a = instantiateStar(infoByFront[i]); // GameObject a = MonoBase.Create3Dobj("Goddess/Star").obj; if (GoddessAstrolabeManagerment.Instance.getLastStarIdById(nebulaId) == infoByFront[i].id) { GameObject last = Instantiate(starLast) as GameObject; last.transform.parent = a.transform; last.transform.localScale = Vector3.one; last.GetComponent <Animator>().Play(0); } GoddessAstrolabeStarCtrl b = a.AddComponent <GoddessAstrolabeStarCtrl>(); b.init(infoByFront[i], this); b.transform.parent = starParent.transform; b.transform.localScale = Vector3.one; b.transform.FindChild("star").gameObject.particleSystem.Play(); pos.localPosition = getTransform(infoByFront[i].position); b.transform.position = pos.position; b.name = infoByFront[i].id + ""; stars.Add(b); } if (stars == null || stars.Count == 0) { return; } for (int i = 0; i < stars.Count; i++) { setLine(stars[i]); } }
//激活指定星星 IEnumerator changeStarById(int id) { yield return(new WaitForSeconds(0.2f)); //先清理旧的 for (int i = 0; i < UIEffectRoot.childCount; i++) { Transform t = UIEffectRoot.GetChild(i); if (t.name == id.ToString()) { Destroy(t.gameObject); } } for (int i = 0; i < starParent.transform.childCount; i++) { Transform t = starParent.transform.GetChild(i); if (t.name == id.ToString()) { Destroy(t.gameObject); } } yield return(new WaitForSeconds(0.2f)); //可以开始创建了 for (int i = 0; i < infoByFront.Count; i++) { if (infoByFront[i].id == id) { GameObject a = instantiateStar(infoByFront[i]); if (GoddessAstrolabeManagerment.Instance.getLastStarIdById(nebulaId) == infoByFront[i].id) { GameObject last = Instantiate(starLast) as GameObject; last.transform.parent = a.transform; last.transform.localScale = Vector3.one; last.GetComponent <Animator>().Play(0); if (nebulaId == 6) { TextTipWindow.Show(LanguageConfigManager.Instance.getLanguage("astrolabe04")); } else { TextTipWindow.Show(LanguageConfigManager.Instance.getLanguage("astrolabe03")); } } GoddessAstrolabeStarCtrl b = a.AddComponent <GoddessAstrolabeStarCtrl>(); b.init(infoByFront[i], this); b.transform.parent = starParent.transform; b.transform.localScale = Vector3.one; b.transform.FindChild("star").gameObject.particleSystem.Play(); pos.localPosition = getTransform(infoByFront[i].position); b.transform.position = pos.position; b.name = infoByFront[i].id + ""; yield return(new WaitForSeconds(0.8f)); setLine(b); stars.Add(b); if (b.getInfo().awardType != 3) { UiManager.Instance.createMessageLintWindow(b.getInfo().awardDesc); } else { PrizeSample ps = new PrizeSample(b.getInfo().award.awardType, b.getInfo().award.awardSid, b.getInfo().award.awardNum); UiManager.Instance.createPrizeMessageLintWindow(ps); } yield return(new WaitForSeconds(0.5f)); //给可激活的星星画线 List <GoddessAstrolabeStarCtrl> next = getNextStar(b.getInfo().next); if (next != null) { for (int j = 0; j < next.Count; j++) { next[j].showUI(); setLine(next[j]); } } yield return(new WaitForSeconds(0.5f)); getStarPosByMainType(); // findStar(); // UiManager.Instance.createMessageWindowByOneButton(b.getInfo().awardDesc,(MessageHandle)=>{ // findStar(); // }); } } }