public void Merge() { List<BaseCell> acidicCellMerge; List<BaseCell> possibleMergers = pcontroller.selectedUnits; acidicCellMerge = possibleMergers.FindAll(item => item.celltype == CellType.ACIDIC_CELL && item.GetComponent<AcidicCell>()); if (acidicCellMerge.Count >= 1) { for (int i = 0; i < acidicCellMerge.Count; i++) { if (mergePartner == null || Vector3.Distance(this.transform.position, acidicCellMerge[i].transform.position) < Vector3.Distance(this.transform.position, mergePartner.transform.position) || (haveMergePartner == false && mergePartner.haveMergePartner == false)) { if (mergePartner != null) { break; } mergePartner = acidicCellMerge[i].GetComponent<AcidicCell>(); mergePartner.mergePartner = this; haveMergePartner = true; mergePartner.haveMergePartner = true; } } } }
void MergingTheCells(AcidicCell other) { float distance = Vector3.Distance(this.transform.position, other.transform.position); if (distance < GetComponent<SphereCollider>().radius *1.3f) { Vector3 trackingPos = this.transform.position; Quaternion trackingRot = this.transform.rotation; GameObject knerveCell = Instantiate(nerveCell, trackingPos, trackingRot) as GameObject; knerveCell.GetComponent<CellSplitAnimation>().currentLevel = currentLevel; knerveCell.GetComponent<CellSplitAnimation>().currentProtein = currentProtein; knerveCell.GetComponent<CellSplitAnimation>().isAIPossessed = isAIPossessed; knerveCell.GetComponent<CellSplitAnimation>().originCell = this; knerveCell.GetComponent<CellSplitAnimation>().originCell1 = other; Deactive(); other.Deactive(); if (!sound_manager.sounds_evolution[5].isPlaying) { sound_manager.sounds_evolution[5].Play(); } } else { Move(other.transform.position); } }