public void Merge() { List<BaseCell> alkaliCellMerge; List<BaseCell> possibleMergers = pcontroller.selectedUnits; alkaliCellMerge = possibleMergers.FindAll(item => item.celltype == CellType.ALKALI_CELL && item.GetComponent<AlkaliCell>()); if (alkaliCellMerge.Count >= 1) { for (int i = 0; i < alkaliCellMerge.Count; i++) { if (mergePartner == null || Vector3.Distance(this.transform.position, alkaliCellMerge[i].transform.position) < Vector3.Distance(this.transform.position, mergePartner.transform.position) || (haveMergePartner == false && mergePartner.haveMergePartner == false)) { if (mergePartner != null) { break; } mergePartner = alkaliCellMerge[i].GetComponent<AlkaliCell>(); mergePartner.mergePartner = this; haveMergePartner = true; mergePartner.haveMergePartner = true; } } } }
void MergingTheCells(AlkaliCell 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); } }