Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        /// <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);
            }
        }
Exemplo n.º 3
0
        /// <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);
        }