/// 敌人进入小兵攻击范围,确定小兵攻击目标 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型 }
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); } }
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; }
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); } }
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); } } }
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); } } } }
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); //插入到队列中 } } }