public void Merge() { List<ColdCell> coldCellsMerge = new List<ColdCell>(); List<BaseCell> possibleMergers = controller.selectedUnits; for (int i = 0; i < possibleMergers.Count; i++) { if (possibleMergers[i].celltype == CellType.COLD_CELL && possibleMergers[i].GetComponent<ColdCell>().InCold == true && possibleMergers[i] != this) { coldCellsMerge.Add(possibleMergers[i].GetComponent<ColdCell>()); } } if (coldCellsMerge.Count >= 1) { for (int o = 0; o < coldCellsMerge.Count; o++) { if (mergingPartner == null || Vector3.Distance(this.transform.position, coldCellsMerge[o].transform.position) < Vector3.Distance(this.transform.position, mergingPartner.transform.position) || (haveMergingPartner == false && mergingPartner.haveMergingPartner == false)) { mergingPartner = coldCellsMerge[o]; mergingPartner.haveMergingPartner = this; haveMergingPartner = true; mergingPartner.haveMergingPartner = true; } } } }
void MergingTheCells(ColdCell other) { float distance = Vector3.Distance(this.transform.position, other.transform.position); if (distance <= GetComponent<SphereCollider>().radius * 2.0f) { Vector3 trackingPos = this.transform.position; Quaternion trackingRot = this.transform.rotation; GameObject cTier2Cold = Instantiate(Tier2Cold, trackingPos, trackingRot) as GameObject; cTier2Cold.GetComponent<CellSplitAnimation>().currentLevel = currentLevel; cTier2Cold.GetComponent<CellSplitAnimation>().currentProtein = currentProtein; cTier2Cold.GetComponent<CellSplitAnimation>().isAIPossessed = isAIPossessed; cTier2Cold.GetComponent<CellSplitAnimation>().originCell = this; cTier2Cold.GetComponent<CellSplitAnimation>().originCell1 = other; if (!sound_manager.sounds_evolution[6].isPlaying) { sound_manager.sounds_evolution[6].Play(); } Deactive(); other.Deactive(); } else { Move(other.transform.position); } }