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); } }
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); } }
//最近 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); }
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]); } } } }
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); } } }
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); } } }
//最近 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); }