//检测范围内目标,符合条件的可被添加至other容器。AttackSkill中默认选中敌人,有特殊需求请覆盖。 public override bool Check() { clonePos.Clear(); List <Vector3> unitList = new List <Vector3>(); List <List <Transform> > list; List <Vector3> hover = new List <Vector3>(); foreach (var item in range.hoverRangeList) { hover.Add(item.transform.position); } list = Detect.DetectObjects(hover); foreach (var listT in list) { foreach (var t in listT) { if (t.GetComponent <Unit>()) { unitList.Add(t.position); } } } foreach (var p in hover) { if (!unitList.Contains(p)) { clonePos.Add(p); } } return(clonePos.Count > 0); }
public override bool Check() { other.Clear(); List <List <Transform> > list; if (customizedHoverRangeList.Count > 0) { list = Detect.DetectObjects(customizedHoverRangeList); } else { list = Detect.DetectObjects(Range.CreateRange(hoverRange, focus)); } foreach (var l in list) { foreach (var u in l) { if (u.GetComponent <CharacterStatus>()) { if (character.GetComponent <CharacterStatus>().IsEnemy(u.GetComponent <CharacterStatus>())) { other.Add(u); } } } } if (other.Count > 0) { return(true); } return(false); }
public override bool Filter(Skill sender) { int i = 0; var list = Detect.DetectObjects(Range.CreateRange(1, sender.character.position)); //牙通牙判断,牙或赤丸是否在相邻1格内 foreach (var l in list) { foreach (var u in l) { if (u.GetComponent <CharacterStatus>()) { if (!sender.character.GetComponent <CharacterStatus>().IsEnemy(u.GetComponent <CharacterStatus>())) { if (u.GetComponent <CharacterStatus>().roleEName == "Kiba") { i++; } } } } } //牙判断,i+1,赤丸判断,i+1,所以i == 2 if (i == 2) { return(base.Filter(sender)); } return(false); }
protected override void InitSkill() { base.InitSkill(); fx = FXManager.GetInstance(); //获取partner var list = Detect.DetectObjects(Range.CreateRange(1, character.position)); //牙通牙判断,牙或赤丸是否在相邻1格内 foreach (var l in list) { foreach (var u in l) { if (u.GetComponent <CharacterStatus>()) { if (!character.GetComponent <CharacterStatus>().IsEnemy(u.GetComponent <CharacterStatus>())) { if (u.GetComponent <CharacterStatus>().roleEName == "Kiba") { if (u != character) { partner = u; } } } } } } Camera.main.GetComponent <RTSCamera>().FollowTarget(focus); partner.GetComponent <Animator>().SetInteger("Skill", animID); }
public override bool Check() { other.Clear(); var list = Detect.DetectObjects(hoverRange, focus); foreach (var l in list) { foreach (var u in l) { if (u.GetComponent <CharacterStatus>()) { if (character.GetComponent <CharacterStatus>().IsEnemy(u.GetComponent <CharacterStatus>())) { other.Add(u); } } } } //other = other.Distinct().ToList(); if (other.Count > 0) { return(true); } return(false); }
public static List<Transform> ComboDetect(Transform attacker, Transform defender) { var list = Detect.DetectObjects(1, defender.position); List<Transform> comboUnits = new List<Transform>(); if((attacker.position - defender.position).magnitude == 1) { foreach (var l in list) { foreach (var u in l) { if (u.position != attacker.position) { if (u.GetComponent<CharacterStatus>()) { if (!attacker.GetComponent<CharacterStatus>().IsEnemy(u.GetComponent<CharacterStatus>())) { if (u.GetComponent<CharacterStatus>().skills.ContainsKey("NinjaCombo")) { if (u.GetComponentsInChildren<Renderer>()[0].material.name == attacker.GetComponentsInChildren<Renderer>()[0].material.name) { comboUnits.Add(u); } } } } } } } } return comboUnits; }
public override bool Check() { other.Clear(); List <List <Transform> > list; if (customizedHoverRangeList.Count > 0) { list = Detect.DetectObjects(customizedHoverRangeList); } else { List <Vector3> hover = new List <Vector3>(); foreach (var item in range.hoverRangeList) { hover.Add(item.transform.position); } list = Detect.DetectObjects(hover); } foreach (var l in list) { foreach (var u in l) { if (u.GetComponent <CharacterStatus>()) { if (character.GetComponent <CharacterStatus>().IsEnemy(u.GetComponent <CharacterStatus>()) && u.GetComponent <CharacterStatus>().characterIdentity != CharacterStatus.CharacterIdentity.obstacle) { other.Add(u); } } } } if (other.Count > 0) { return(true); } return(false); }