Пример #1
0
    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;
                }
            }
        }
    }
Пример #2
0
    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);

        }
    }