public void Remove(GameObject go) { if (go == null) { Debug.Log("Remove null"); return; } else { ClickBox box = go.GetComponent <ClickBox>(); box.OverAnimPlay(); ClickBox.BoxType type = box.type; //处理点击事件a b if (type == ClickBox.BoxType.YellowBox || type == ClickBox.BoxType.BlueBox) { MakeEventAB(); blockCount[box.blockIndex]--; } Remove(go, type); clickCount++; } }
public void Remove(GameObject go, ClickBox.BoxType type) { ClickBox box = go.GetComponent <ClickBox>(); go.SetActive(false); switch (type) { case ClickBox.BoxType.YellowBox: yellowBoxCount--; attackBoxCount--; _yellowObjects.Remove(go); break; case ClickBox.BoxType.RedBox: redBoxCount--; moveBoxCount--; _redObjects.Remove(go); break; case ClickBox.BoxType.BombBox: bombBoxCount--; moveBoxCount--; _bombObjects.Remove(go); if (bombBoxCount < 0) { bombBoxCount = 0; } break; case ClickBox.BoxType.BlueBox: blueBoxCount--; attackBoxCount--; _blueObjects.Remove(go); break; case ClickBox.BoxType.ComboBox: comboBoxCount--; _comboObjects.Remove(go); break; case ClickBox.BoxType.BossBox: bossBoxCount--; moveBoxCount--; _bossObjects.Remove(go); break; case ClickBox.BoxType.FastBox: fastBoxCount--; moveBoxCount--; _fastObjects.Remove(go); break; case ClickBox.BoxType.GroundBox: groundBoxCount--; moveBoxCount--; _groundObjects.Remove(go); break; } if (moveBoxCount < 0) { moveBoxCount = 0; } Destroy(go); }
//移动块 public void Spawn(GameObject prefab, float initx, ClickBox.BoxType type, float minSpeed, float width, bool isAcc = false, int click = 0) { // if (!hasMove) return; float y; Vector3 pos = transform.position; y = centerY; GameObject go = Instantiate(prefab) as GameObject; int index = 0; int layer = 0; switch (type) { case ClickBox.BoxType.RedBox: redBoxIndex++; index = redBoxIndex; moveBoxCount++; redBoxCount++; layer = 2000; _redObjects.Add(go); break; case ClickBox.BoxType.GroundBox: groundBoxIndex++; index = groundBoxIndex; moveBoxCount++; groundBoxCount++; layer = 3000; _groundObjects.Add(go); break; case ClickBox.BoxType.BombBox: bombBoxIndex++; index = bombBoxIndex; moveBoxCount++; bombBoxCount++; layer = 4000; _bombObjects.Add(go); break; case ClickBox.BoxType.FastBox: fastBoxIndex++; index = fastBoxIndex; moveBoxCount++; fastBoxCount++; layer = 5000; _fastObjects.Add(go); break; case ClickBox.BoxType.BossBox: bossBoxIndex++; index = bossBoxIndex; moveBoxCount++; bossBoxCount++; layer = 6000; _bossObjects.Add(go); break; } ClickMoveBox box = go.GetComponent <ClickMoveBox>(); go.transform.parent = this.transform; go.transform.localScale = new Vector3(1, 1, 1); //控制在横条内生成 float half = go.GetComponent <Collider2D>().bounds.size.x / 2; float temp = initx - half; box.offsetX = half; box.Init(half, layer + index); box.InitMoveBox(minSpeed, minSpeed + 1, isAcc, click); go.transform.position = new Vector3(temp, y, 0); }
//固定块 public void Spawn(GameObject prefab, ClickBox.BoxType type, float width) { // if(!hasStatic) return; float min; float max; float x; float y; Vector3 pos = transform.position; min = BattleManager.Instance.pop.leftPos.transform.position.x; max = BattleManager.Instance.pop.rightPos.transform.position.x; x = Mathf.Lerp(min, max, UnityEngine.Random.value); y = centerY; GameObject go = Instantiate(prefab) as GameObject; int index = 0; int layer = 0; switch (type) { case ClickBox.BoxType.BlueBox: blueBoxIndex++; index = blueBoxIndex; blueBoxCount++; attackBoxCount++; layer = 100; _blueObjects.Add(go); break; case ClickBox.BoxType.YellowBox: yellowBoxIndex++; index = yellowBoxIndex; yellowBoxCount++; attackBoxCount++; layer = 1000; _yellowObjects.Add(go); break; case ClickBox.BoxType.ComboBox: comboBoxIndex += 3; index = comboBoxIndex; comboBoxCount++; layer = 10; _comboObjects.Add(go); break; } ClickBox box = go.GetComponent <ClickBox>(); go.transform.parent = this.transform; go.transform.localScale = new Vector3(1, 1, 1); x = staticBoxMakeCheck(x, box); //控制在横条内生成 Bounds bound = go.GetComponent <Collider2D>().bounds; float half = bound.size.x / 2; if (type == ClickBox.BoxType.ComboBox) { half += half * 0.3f; } float temp = min + half; if (x < temp) { x = temp; } temp = max - half; if (x > temp) { x = temp; } box.Init(half, layer + index); if (type == ClickBox.BoxType.ComboBox) { float tt = max + Math.Abs(min); x = min + (tt / 2); } //技能条重叠解决 //if (_comboObjects.Count > 0 && type != ClickBox.BoxType.ComboBox) //{ // foreach (GameObject d in _comboObjects) // { // DragBox drag = d.GetComponent<DragBox>(); // float haf = drag.childBox.bounds.size.x/2; // if (drag.childBox.bounds.Intersects(bound)) // { // x += drag.childBox.bounds.size.x; // } // } //} go.transform.position = new Vector3(x, y, 0); }
public MoveBoxState(ClickBox.BoxType t, string[] s, MonsterMgr r) { type = t; role = r; strs = s; }