Exemplo n.º 1
0
        protected void GetCharNearest(CharHandler charHandler, float angle, float raidus, List <CharHandler> srcLst, List <CharHandler> retLst)
        {
            float       retDis  = 0xffff;
            CharHandler retChar = null;

            for (int i = 0; i < srcLst.Count; ++i)
            {
                CharHandler tmpChar = srcLst[i];
                if (null == charHandler || tmpChar.IsInexistence())
                {
                    continue;
                }

                float tmpAngle = Vector3.Angle(charHandler.m_ParentTrans.localRotation * Vector3.forward, tmpChar.m_ParentTrans.position - charHandler.m_ParentTrans.position);
                float tmpDis   = Vector3.Distance(charHandler.m_ParentTrans.position, tmpChar.m_ParentTrans.position);

                if (tmpAngle <= angle / 2f && tmpDis < raidus && tmpDis < retDis)
                {
                    retDis  = tmpDis;
                    retChar = tmpChar;
                }
            }

            if (null != retChar)
            {
                retLst.Add(retChar);
            }
        }
Exemplo n.º 2
0
        private void TypeHPLeast(CharHandler charHandler, SkillDataSon skillDataSon, List <List <CharHandler> > lists, List <CharHandler> listRet)
        {
            CharHandler con = GetConcentrate(charHandler, skillDataSon.m_eAimSide);

            if (null == con)
            {
                for (int i = 0; i < lists.Count; ++i)
                {
                    for (int j = 0; j < lists[i].Count; ++j)
                    {
                        CharHandler tmpChar = lists[i][j];
                        if (!tmpChar.IsInexistence())
                        {
                            if (0 == listRet.Count)
                            {
                                listRet.Add(lists[i][j]);
                            }
                            else if (tmpChar.m_CharData.CurHP < listRet[0].m_CharData.CurHP)
                            {
                                listRet[0] = tmpChar;
                            }
                        }
                    }
                }
            }
            else
            {
                listRet.Add(con);
            }
        }
Exemplo n.º 3
0
        //最近
        public CharHandler GetNearestChar(CharHandler charHandler, BattleEnum.Enum_CharSide side, ref float dis)
        {
            List <CharHandler> lst = BattleEnum.Enum_CharSide.Mine == side ? m_listGeneralMine : m_listGeneralEnemy;
            Vector3            pos = charHandler.m_ParentTrans.position;
            CharHandler        ret = null;

            for (int i = 0; i < lst.Count; ++i)
            {
                CharHandler tmpChar = lst[i];
                if (tmpChar == charHandler || tmpChar.IsInexistence())
                {
                    continue;
                }

                float temp = Vector3.Distance(tmpChar.m_ParentTrans.position, pos);
                if (temp < dis)
                {
                    dis = temp;
                    ret = tmpChar;
                }
            }

            if (BattleEnum.Enum_CharSide.Mine != side)
            {
                CharHandler ch = GetNearestMonster(charHandler, ref dis);
                if (null != ch)
                {
                    ret = ch;
                }
            }

            return(ret);
        }
Exemplo n.º 4
0
 private void TypeFriend(CharHandler charHandler, SkillDataSon skillDataSon, List <List <CharHandler> > lists, List <CharHandler> listRet)
 {
     for (int i = 0; i < lists.Count; ++i)
     {
         for (int j = 0; j < lists[i].Count; ++j)
         {
             CharHandler tmpChar = lists[i][j];
             if (tmpChar != charHandler && !tmpChar.IsInexistence())
             {
                 listRet.Add(lists[i][j]);
             }
         }
     }
 }
Exemplo n.º 5
0
        protected void GetCharDistance(CharHandler charHandler, Vector3 centerPos, float angle, float raidus, float distance, List <CharHandler> srcLst, List <CharHandler> retLst)
        {
            for (int i = 0; i < srcLst.Count; ++i)
            {
                CharHandler tmpChar = srcLst[i];
                if (null == charHandler || tmpChar.IsInexistence())
                {
                    continue;
                }

                float tmpAngle = Vector3.Angle(charHandler.m_ParentTrans.localRotation * Vector3.forward, tmpChar.m_ParentTrans.position - centerPos);
                float tmpDis   = Vector3.Distance(centerPos, tmpChar.m_ParentTrans.position);
                if (tmpAngle <= angle / 2f && tmpDis < raidus)
                {
                    retLst.Add(tmpChar);
                }
            }
        }
Exemplo n.º 6
0
        protected void GetCharInRect(CharHandler charHandler, float sizeX, float sizeY, List <CharHandler> srcLst, List <CharHandler> retLst)
        {
            for (int i = 0; i < srcLst.Count; ++i)
            {
                CharHandler tmpChar = srcLst[i];
                if (null == charHandler || tmpChar.IsInexistence())
                {
                    continue;
                }

                Vector3[] polygon = new Vector3[4];
                polygon[0] = charHandler.m_ParentTrans.position - charHandler.m_ParentTrans.right * sizeX / 2;
                polygon[1] = charHandler.m_ParentTrans.position + charHandler.m_ParentTrans.right * sizeX / 2;
                polygon[2] = polygon[1] + charHandler.m_ParentTrans.forward * sizeY;
                polygon[3] = polygon[0] + charHandler.m_ParentTrans.forward * sizeY;

                if (IsPointInPolygon(tmpChar.m_ParentTrans.position, polygon))
                {
                    retLst.Add(tmpChar);
                }
            }
        }
Exemplo n.º 7
0
        //最近
        public CharHandler GetNearestMonster(CharHandler handler, ref float dis)
        {
            List <CharHandler> lst = m_listMonster;
            Vector3            pos = handler.m_ParentTrans.position;
            CharHandler        ret = null;

            for (int i = 0; i < lst.Count; ++i)
            {
                CharHandler tmpChar = lst[i];
                if (tmpChar == handler || tmpChar.IsInexistence())
                {
                    continue;
                }

                float temp = (tmpChar.m_ParentTrans.position - pos).magnitude;
                if (temp < dis)
                {
                    dis = temp;
                    ret = tmpChar;
                }
            }

            return(ret);
        }