Ejemplo n.º 1
0
 public void SetTarget(GameObject tar)
 {
     target = tar;
     if (target != null)
     {
         UnitStatSystem tarStat = target.GetComponent <UnitStatSystem>();
         if (tarStat != null)
         {
             foreach (GameObject uni in unitList)
             {
                 UnitCombat com = uni.GetComponent <UnitCombat>();
                 com.SetTarget(tarStat);
             }
         }
         UnitGroupSystem tarGro = target.GetComponent <UnitGroupSystem>();
         if (tarGro != null)
         {
             foreach (GameObject uni in unitList)
             {
                 UnitCombat     com        = uni.GetComponent <UnitCombat>();
                 UnitStatSystem tarLitStat = tarGro.GetUnitList()[Random.Range(0, tarGro.GetUnitList().Count)].GetComponent <UnitStatSystem>();
                 com.SetTarget(tarLitStat);
             }
         }
     }
 }
Ejemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        if (isSelected)
        {
            selectorCircle.SetActive(true);
        }
        else
        {
            selectorCircle.SetActive(false);
        }

        for (int i = 0; i < unitList.Count; i++)
        {
            GameObject uniChe = null;
            uniChe = unitList[i];
            if (uniChe)
            {
                UnitStatSystem uniSta = uniChe.GetComponent <UnitStatSystem>();
                uniSta.SetSelected(isSelected);
            }
        }

        if (target != null)
        {
            Vector3  targetPos = new Vector3(target.transform.position.x, 0, target.transform.position.z);
            Vector3  groPos    = new Vector3(transform.position.x, 0, transform.position.z);
            UnitMove mover     = GetComponent <UnitMove>();
            if (Vector3.Distance(targetPos, groPos) >= atkRange)
            {
                if (!mover.GetIsColEvd())
                {
                    mover.OrderMove(targetPos);
                }
            }
            else
            {
                if (!mover.GetIsColEvd())
                {
                    mover.OrderMove(Vector3.one);
                }
            }
        }
        else
        {
            for (int i = 0; i < unitList.Count; i++)
            {
                GameObject uniObj = null;
                uniObj = unitList[i];
                GameObject posObj = null;
                posObj = pointList[i];
                if (uniObj != null && posObj != null)
                {
                    Vector3        uniPos = new Vector3(uniObj.transform.position.x, 0, uniObj.transform.position.z);
                    Vector3        posPos = new Vector3(posObj.transform.position.x, 0, posObj.transform.position.z);
                    UnitMove       uni    = uniObj.GetComponent <UnitMove>();
                    UnitCombat     com    = uniObj.GetComponent <UnitCombat>();
                    UnitStatSystem star   = uniObj.GetComponent <UnitStatSystem>();
                    if (star.GetAlive())
                    {
                        star.SetSelected(isSelected);
                        if (!com.HaveTarget())
                        {
                            if (Vector3.Distance(uniPos, posPos) > 1)
                            {
                                if (!uni.GetIsColEvd())
                                {
                                    uni.OrderMove(posObj.transform.position);
                                    com.SetAutoATK(false);
                                }
                            }
                            else
                            {
                                if (!uni.GetIsColEvd())
                                {
                                    uni.OrderMove(Vector3.one);
                                    com.SetAutoATK(true);
                                }
                            }
                        }
                        else
                        {
                            Vector3 groPos = new Vector3(transform.position.x, 0, transform.position.z);
                            if (Vector3.Distance(groPos, uniPos) >= maxFollow)
                            {
                                com.SetTarget(null);
                                com.SetAutoATK(false);
                            }
                        }
                    }
                }
                else
                {
                    unitList.Remove(uniObj);
                    pointList.Remove(posObj);
                    Destroy(posObj.gameObject);
                }
            }
        }

        if (unitList.Count <= 0)
        {
            Destroy(this.gameObject);
        }
    }