Пример #1
0
    public static ICharaBattle GetNearestTarget(ICharaBattle battleInfo, SkillDefine.ColliderTarget targetType)
    {
        List <ICharaBattle> targetList = GetTargetList(battleInfo, targetType);
        ICharaBattle        target     = null;
        float dis = -1;

        for (int i = 0; i < targetList.Count; i++)
        {
            float tmpDis = Vector3.Distance(battleInfo.MovePos, targetList[i].MovePos);
            if (dis == -1)
            {
                dis    = tmpDis;
                target = targetList[i];
            }
            else
            {
                if (tmpDis < dis)
                {
                    dis    = tmpDis;
                    target = targetList[i];
                }
            }
        }

        return(target);
    }
Пример #2
0
    public ColliderInfo()
    {
        Interval    = 0;
        LifeTime    = 10;
        IsPenetrate = false;
        ColliderMax = -1;

        FightEffectList = new List <FightEffectInfo>();
        EffectInfos     = new List <EffectInfo>();

        ColliderTarget = SkillDefine.ColliderTarget.SELF;

        ColliderType = CollBase.ColType.CIRCLE;
        CollPosType  = CollBase.PosType.SKILL;

        StartX     = 0;
        StartZ     = 0;
        StartAngle = 0;
        //矩形
        Width  = 0;
        Height = 0;
        //扇形
        InCircle  = 0;
        OutCircle = 0;
        Angle     = 1;
        //圆半径
        Radius = 0;
    }
Пример #3
0
    //===================================目标选择=================================================
    public static List <ICharaBattle> GetTargetList(ICharaBattle battleInfo, SkillDefine.ColliderTarget targetType)
    {
        List <ICharaBattle> targetList = new List <ICharaBattle>();

        if (targetType == SkillDefine.ColliderTarget.SELF)
        {
            targetList.Add(battleInfo as ICharaBattle);
            return(targetList);
        }

        List <CharaActorInfo> list = ZTBattleSceneManager.GetInstance().GetCharaList();

        for (int i = 0; i < list.Count; i++)
        {
            ICharaBattle info = list[i] as ICharaBattle;
            //过滤死亡玩家
            if (null != info && !info.IsDead())
            {
                switch (targetType)
                {
                case SkillDefine.ColliderTarget.TEAM:
                    if (battleInfo.Camp == info.Camp)
                    {
                        targetList.Add(info);
                    }
                    break;

                case SkillDefine.ColliderTarget.ENEMY:
                    if (battleInfo.Camp != info.Camp)
                    {
                        targetList.Add(info);
                    }
                    break;

                case SkillDefine.ColliderTarget.ALL:
                    targetList.Add(info);
                    break;
                }
            }
        }
        return(targetList);
    }