/// <summary> /// 显示信号扩展 /// </summary> public void PlaySignalExpand(StateController controller, float radius, float time) { SignalExpand signal = signalExpandPool.GetNextObject(controller.transform.position).GetComponent <SignalExpand>(); //signal.transform.position = controller.transform.position; signal.Play(Vector3.one, Vector3.one * radius * 2f, time, controller.playerManager.Team == null ? Color.white : controller.playerManager.Team.TeamColor); controller.StartCoroutine(FindAndSend(controller, signal)); }
/// <summary> /// 查找半径范围内所有符合条件的对象,并发送信息 /// </summary> private IEnumerator FindAndSend(StateController controller, SignalExpand signal) { while (!signal.Timer.IsTimeUp) { for (int i = 0; i < AllPlayerManager.Instance.Count; i++) { if (AllPlayerManager.Instance[i] != controller.playerManager && AllPlayerManager.Instance[i].gameObject.activeInHierarchy && GameMathf.TwoPosInRange(controller.transform.position, AllPlayerManager.Instance[i].transform.position, signal.CurrentPercent * radius)) { TankManager target = AllPlayerManager.Instance[i] as TankManager; if (target == null) { continue; } switch (acceptType) { case AcceptType.All: break; case AcceptType.Teammates: if (AllPlayerManager.Instance[i].Team != controller.Team) { continue; } break; case AcceptType.Enemy: if (AllPlayerManager.Instance[i].Team == controller.Team) { continue; } break; } target.stateController.statePrefs.AddIfNotContains(CommonCode.BroadcastMessage, messages); } } yield return(null); } }
/// <summary> /// 显示信号扩展 /// </summary> public void PlaySignalExpand(float radius, float time) { SignalExpand signal = signalExpandPool.GetNextObject(transform.position).GetComponent <SignalExpand>(); signal.Play(Vector3.one, Vector3.one * radius, time, Team == null? Color.white : Team.TeamColor); }