IEnumerator CreatWingmanIEnuerator(WingmanData data, int cout) { float tempTime = 2.0f / cout; GameObject wingman = player.Find("wingman").gameObject; int nowCout = wingman.transform.childCount; if (nowCout >= cout) { IEnumeratorManager.Instance.StopAllCoroutines(); } yield return(new WaitForSeconds(tempTime)); AddOneWingman(data); TweenPosition m_TP = wingman.transform.GetChild(nowCout - 1).GetComponent <TweenPosition>(); m_TP.PingPangCoutSet = null; nowCout = wingman.transform.childCount; GameObject go = wingman.transform.GetChild(nowCout - 1).gameObject; TweenPosition tp = go.GetComponent <TweenPosition>(); tp.tp = tp; tp.data = data; tp.cout = cout; tp.PingPangCoutSet += CreatWingmanReturn; }
//恢复 到 指定数目的僚机 (僚机单个离开自机的顺序 按第一个 第二个 第三个。。。才能使用的恢复方法) public void CreatWingmanReturnCout(WingmanData data, int cout) { player = GameObject.FindWithTag("Player").transform; if (player == null) { Debug.LogError("player is null"); return; } GameObject wingman = player.Find("wingman").gameObject; int nowCout = wingman.transform.childCount; if (nowCout > cout) { Debug.LogError("cout is error!"); return; } if (nowCout == 0) { AddOneWingman(data); } nowCout = wingman.transform.childCount; GameObject go = wingman.transform.GetChild(nowCout - 1).gameObject; TweenPosition tp = go.GetComponent <TweenPosition>(); tp.tp = tp; tp.data = data; tp.cout = cout; tp.PingPangCoutSet += CreatWingmanReturn; }
IEnumerator SetWingmanCout(WingmanData data, int cout) { player = GameObject.FindWithTag("Player").transform; if (player == null) { Debug.LogError("player is null"); } GameObject parent = player.transform.Find("wingman").gameObject; float nowCout = parent.transform.childCount; for (int i = 0; i < nowCout; i++) { GameObject child = parent.transform.GetChild(i).gameObject; GameObject.Destroy(child); } float tempTime = 2.0f / cout; for (int i = 0; i < cout; i++) { GameObject wingaman = GameObject.Instantiate(wingmanPrefab); wingaman.transform.SetParent(parent.transform, false); TweenPosition tp = wingaman.GetComponent <TweenPosition>(); tp.tp = tp; //Sprite sprite = ResourcesManager.Instance.LoadWingmanSprite(data.spriteName); tp.PingPangOneStop += PingPangOneStep; tp.PingPangTwoStop += PingPangSecondStep; WingmanInfo info = wingaman.GetComponent <WingmanInfo>(); info.SetBullet(data.bulletName); info.tempTime = data.tempTime; yield return(new WaitForSeconds(tempTime)); } }
public WingmanData GetDataById(int id) { WingmanData data = null; if (!WingmanDataDic.TryGetValue(id, out data)) { Debug.LogError("not wingmanData in dic!"); return(null); } return(data); }
void AddOneWingman(WingmanData data) { player = GameObject.FindWithTag("Player").transform; if (player == null) { Debug.LogError("player is null"); return; } GameObject parent = player.transform.Find("wingman").gameObject; GameObject wingaman = GameObject.Instantiate(wingmanPrefab); wingaman.transform.SetParent(parent.transform, false); TweenPosition tp = wingaman.GetComponent <TweenPosition>(); tp.tp = tp; //Sprite sprite = ResourcesManager.Instance.LoadWingmanSprite(data.spriteName); tp.PingPangOneStop += PingPangOneStep; tp.PingPangTwoStop += PingPangSecondStep; WingmanInfo info = wingaman.GetComponent <WingmanInfo>(); info.SetBullet(data.bulletName); info.tempTime = data.tempTime; }
private void CreatWingmanReturn(WingmanData data, int cout, TweenPosition tp) { IEnumeratorManager.Instance.StartCoroutine(CreatWingmanIEnuerator(data, cout)); }
public void ShowWingman(WingmanData data, int cout) { IEnumeratorManager.Instance.StartCoroutine(SetWingmanCout(data, cout)); }
void CharacterControl() { if (Input.GetKeyDown(KeyCode.Tab)) { if (state == PlayerState.talk) { state = PlayerState.attack; } else { state = PlayerState.talk; } } //if (Input.GetKeyDown(KeyCode.Escape)) //{ // GUIManager.ShowView("SystemPanel"); //} //if (Input.GetKeyDown(KeyCode.Escape)) { // GUIManager.ShowView("SystemPanel"); //} if (TalkPanel.isSpeak || EventStoryPanel.isEventSpeak || CGPanel.IsCGPlay || BattleCamera.Instance.isUseCamera) { return; } //if (BattleCommoUIManager.Instance.IsBlackShade) //{ // return; //} if (Input.GetKey(KeyCode.RightArrow)) { if (Input.GetKey(KeyCode.LeftArrow)) { return; } //this.transform.rotation = Quaternion.Euler(this.transform.rotation.eulerAngles.x, 0, this.transform.rotation.eulerAngles.z); this.GetComponent <SpriteRenderer>().flipX = false; AnimatorStateInfo stateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); if (stateInfo.IsName("Base Layer.loopIdle") || stateInfo.IsName("Base Layer.startIdle") || stateInfo.IsName("Base Layer.idle")) { m_Animator.SetBool("isWalk", true); } if (stateInfo.IsName("Base Layer.move")) { this.transform.Translate(new Vector3(1, 0, 0) * Time.deltaTime * speed, Space.Self); } } if (Input.GetKey(KeyCode.LeftArrow)) { if (Input.GetKey(KeyCode.RightArrow)) { return; } //this.transform.rotation = Quaternion.Euler(this.transform.rotation.eulerAngles.x, 180, this.transform.rotation.eulerAngles.z); this.GetComponent <SpriteRenderer>().flipX = true; AnimatorStateInfo stateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); if (stateInfo.IsName("Base Layer.loopIdle") || stateInfo.IsName("Base Layer.startIdle") || stateInfo.IsName("Base Layer.idle")) { m_Animator.SetBool("isWalk", true); } if (stateInfo.IsName("Base Layer.move")) { this.transform.Translate(new Vector3(-1, 0, 0) * Time.deltaTime * speed, Space.Self); } } else if (Input.GetKeyUp(KeyCode.RightArrow)) { if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow)) { return; } m_Animator.SetBool("isWalk", false); } else if (Input.GetKeyUp(KeyCode.LeftArrow)) { if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow)) { return; } m_Animator.SetBool("isWalk", false); } if (tempTime_Z < Time.time) { tempTime_Z = Time.time; tempTime_X = Time.time; } if (Input.GetKey(KeyCode.X)) { AnimatorStateInfo stateInfo = m_Animator.GetCurrentAnimatorStateInfo(0); if (stateInfo.IsName("Base Layer.Move") || stateInfo.IsName("Base Layer.idle")) { m_Animator.SetBool("Move", false); m_Animator.SetBool("move", false); m_Animator.SetBool("Attack", true); } } if (Input.GetKey(KeyCode.Z) && Time.time >= tempTime_Z) { GameObject go = transform.Find("wingman").gameObject; GameObject item = go.transform.GetChild(0).gameObject; TweenPosition tp = item.GetComponent <TweenPosition>(); tp.enabled = false; tp.transform.SetParent(null); tp.GetComponent <WingmanInfo>().enabled = false; item.AddComponent <Rigidbody>(); item.GetComponent <Rigidbody>().useGravity = false; tp.GetComponent <Rigidbody>().AddForce(new Vector3(1, 0, 0) * 1500); tempTime_Z += rate_Z; } if (Input.GetKeyDown(KeyCode.V)) { WingmanData data = WingmanManager.Instance.GetDataById(0); WingmanManager.Instance.CreatWingmanReturnCout(data, 6); } }