Esempio n. 1
0
 /// 敌人进入小兵攻击范围,确定小兵攻击目标
 private void OnTriggerEnter(Collider other)
 {
     //判断敌人是英雄还是小兵
     if (other.gameObject.tag == "player" && this.type == 1) //针对于操作者玩家而言,敌方小兵会攻打玩家,玩家相对于敌方小兵是敌人
     {
         this.enemylist.Add(other.transform);
         Transform temp = enemylist[0];            //取出列表的第一个作为攻击目标
         if (target == null || temp != target)
         {
             target = temp;
         }
     }
     else
     {
         SmartSoldier soldier = other.GetComponent <SmartSoldier>();
         if (soldier != null &&
             soldier.type != this.type &&              //确定是敌方
             !enemylist.Contains(other.transform))                  //检查敌人是否已经包含在敌人列表里,防止重复加入
         {
             enemylist.Add(other.transform);
             Transform temp = enemylist[0];
             if (target == null || temp != target)
             {
                 target = temp;
             }
         }
     }
 }
 public void Atk2()
 {
     ani.SetInteger("state", AnimState.ATTACK1);
     if (enemyList.Count <= 0)
     {
         return;
     }
     for (int i = 0; i < enemyList.Count; i++)
     {
         if (enemyList.Count > 0 && !enemyList[i].name.Contains("Tower"))
         {
             SmartSoldier soldier = enemyList[i].GetComponent <SmartSoldier>();
             if (soldier && soldier.type != this.type)            //是小兵就攻击小兵
             {
                 Health hp = soldier.GetComponent <Health>();
                 hp.TakeDamage(1f);
                 if (hp.hp.Value <= 0)
                 {
                     enemyList.Remove(soldier.gameObject);
                     Destroy(soldier.gameObject);
                 }
             }
         }
     }
 }
    //1.小兵生成位置 2. 目标
    void CreatSmartSoldier(Transform starTRan, Transform[] towers)
    {
        print("CreatSmartSoldier");

        GameObject obj = Instantiate(solder, starTran.position, Quaternion.identity) as GameObject;

        obj.transform.parent = soldierParent;

        SmartSoldier soldier = obj.GetComponent <SmartSoldier> ();

        soldier.towers = towers;
    }
    //生成一个小兵
    //层级表示的时2的几次方所以时int型的
    void CreatSmartSoldier(SoldierType soldierType, Transform startTran, Transform[] towers, int road)
    {
        GameObject obj = Instantiate(soldierPrefab, startTran.position, Quaternion.identity) as GameObject;

        //设置父物体
        obj.transform.parent = soldierParent;

        SmartSoldier soldier = obj.GetComponent <SmartSoldier> (); //获取脚本

        soldier.towers = towers;                                   //指定目标防御塔
        soldier.SetRoad(road);
        soldier.type = (int)soldierType;                           //SoldierType类型转换为int型
    }
Esempio n. 5
0
    private void OnTriggerExit(Collider col)
    {
        if (col.gameObject.tag == "Player")
        {
            listHero.Remove(col.gameObject);
        }
        SmartSoldier soldier = col.GetComponent <SmartSoldier>();

        if (soldier && soldier.type != towerType)
        {
            listSoldier.Remove(col.gameObject);
        }
    }
Esempio n. 6
0
    void CreatSmartSoldier(SoldierType soldierType, Transform startTran, Transform[] towers, int road)
    {
        GameObject go = Instantiate(soldierPrefab, startTran.position, Quaternion.identity) as GameObject;

        go.transform.parent = soldierParent;

        SmartSoldier soldier = go.GetComponent <SmartSoldier>();

        soldier.towers = towers;
        soldier.SetRoad(road);

        soldier.type = (int)soldierType;
    }
Esempio n. 7
0
    private void OnTriggerEnter(Collider col)
    {
        if (col.gameObject.tag == "Player")
        {
            listHero.Add(col.gameObject);
        }
        SmartSoldier soldier = col.GetComponent <SmartSoldier>();

        if (soldier && soldier.type != towerType)
        {
            listSoldier.Add(col.gameObject);
            print(listSoldier.Count);
        }
    }
Esempio n. 8
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.tag == "Player" && this.type == 1)
     {
         AddToEnemyList(other);
     }
     else
     {
         SmartSoldier ss = other.GetComponent <SmartSoldier>();
         if (ss != null && ss.type != this.type && !this.enemyList.Contains(other.transform))
         {
             AddToEnemyList(other);
         }
     }
 }
Esempio n. 9
0
 public void Atk1()
 {
     ani.SetInteger("state", AnimState.ATTACK1);
     enemyList.RemoveAll(t => t == null);
     for (int i = 0; i < enemyList.Count; i++)
     {
         if (!enemyList[i].name.Contains("Tower"))
         {
             SmartSoldier ss = enemyList[i].GetComponent <SmartSoldier>();
             if (ss && ss.type != this.type)
             {
                 ss.TakeDamage(0.5f);
             }
         }
     }
 }
Esempio n. 10
0
 private void OnTriggerEnter(Collider col)       //触发函数
 {
     if (col.gameObject.tag == "player")
     {
         listHero.Add(col.gameObject);
     }
     else
     {
         SmartSoldier soldier = col.GetComponent <SmartSoldier> ();
         if (soldier && soldier.type != towerType)               //判断小兵是否不存在或者类型不匹配
         //print(listSoldier.Count);
         {
             listSoldier.Add(col.gameObject);                  //插入到队列中
         }
     }
 }