//检测范围内目标,符合条件的可被添加至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);
    }
Esempio n. 2
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);
    }
Esempio n. 3
0
    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);
    }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
    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);
    }
Esempio n. 6
0
    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;
    }
Esempio n. 7
0
    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);
    }