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); }
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; }
//===================================目标选择================================================= 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); }