Ejemplo n.º 1
0
        private void RefreshGui(float interval)
        {
            if (adapter != null && isGameObjectCreated)
            {
                if (safeArea.Level != adapter.NextDuquan.Level)
                {
                    var tempData = adapter.CurDuquan;
                    rawDuquan.SetValue(tempData.Level, tempData.Center, tempData.Radius, tempData.WaitTime, tempData.MoveTime);
                    waitTime = rawDuquan.WaitTime;
                }

                //设置当前数据
                curDuquan = adapter.CurDuquan;
                safeArea  = adapter.NextDuquan;
//                curPlayPos.x = adapter.CurPosition.x;
//                curPlayPos.y = adapter.CurPosition.z;
                curPlayPos = adapter.CurPosition.WorldVector3().To2D();

                if (curDuquan.Level != adapter.OffLineNum && safeArea.Level != adapter.OffLineNum && rawDuquan.Level != adapter.OffLineNum &&
                    curDuquan.Radius != 0 && safeArea.Radius != 0 && rawDuquan.Radius != 0)
                {
                    root.gameObject.SetActive(true);
                    RefreshSlider(interval);
                }
                else
                {
                    root.gameObject.SetActive(false);
                }
            }
        }
Ejemplo n.º 2
0
        public void Update(DuQuanInfo duQuanInfo, Vector2 selfPlayPos, float rate, float windowWidthByRice)
        {
            Vector2 referPosByPixel = Vector2.zero;

            var duquanPos = duQuanInfo.Center.ShiftedUIVector2();

            if (duQuanInfo.Level == 0 || duQuanInfo.Radius == 0 || UnityEngine.Vector2.Distance(selfPlayPos, duquanPos) > 1.414f * windowWidthByRice / 2 + duQuanInfo.Radius) //不在地图视野内
            {
                UIUtils.SetActive(tran, false);
            }
            else
            {
                UIUtils.SetActive(tran, true);

                //设置大小
                float beishu      = (duQuanInfo.Radius * rate) / (rectTransform.rect.width / 2);
                float beishuDaosu = (rectTransform.rect.width / 2) / (duQuanInfo.Radius * rate);
                var   tilingX     = Mathf.Max(beishuDaosu, 0);
                float tilingY     = tilingX;
                material.SetTextureScale("_MainTex", new Vector2(tilingX, tilingY));

                //设置位置
                Vector2 startPoint = referPosByPixel + (duquanPos - selfPlayPos) * rate;
                var     halfW      = rectTransform.rect.width / 2;
                Vector2 endPoint   = referPosByPixel - new Vector2(halfW, halfW) + new Vector2(beishu * halfW, beishu * halfW);
                var     deltaX     = (endPoint.x - startPoint.x) / (beishu * rectTransform.rect.width);
                var     deltaY     = (endPoint.y - startPoint.y) / (beishu * rectTransform.rect.width);
                var     safeDelat  = new Vector2(deltaX, deltaY);
                material.SetTextureOffset("_MainTex", safeDelat);
                material.SetFloat("_BoundWidth", lineWidth * beishuDaosu * 256 / rectTransform.rect.width);
            }
        }
Ejemplo n.º 3
0
        public void Update(DuQuanInfo safeDuquan, Vector2 selfPlayPos, float playItemModelWidth, float rate, float miniMapRepresentWHByRice)
        {
            var salfCenter = safeDuquan.Center.ShiftedUIVector2();

            // 安全区和当前玩家的连线的方向
            if (safeDuquan.Level != 0 && safeDuquan.Radius > 0 && Vector2.Distance(selfPlayPos, salfCenter) > safeDuquan.Radius)  //安全区外
            {
                UIUtils.SetActive(tran, true);
                {
                    Vector2 fromVector = new Vector2(0, 1);
                    Vector3 temper     = salfCenter - selfPlayPos;
                    Vector2 toVector   = new Vector3(temper.x * -1, temper.y, temper.z); // 以玩家为中心的坐标系 转化unity的3d坐标系
                    float   angle      = Vector2.Angle(fromVector, toVector) - 180;      //求出两向量之间的夹角
                    Vector3 normal     = Vector3.Cross(fromVector, toVector);            //叉乘求出法线向量
                    if (normal.z < 0)
                    {
                        angle = 360 - angle;
                    }
                    line.localEulerAngles = new UnityEngine.Vector3(0, 0, -angle % 360);

                    //控制连线的长度
                    var width     = temper.magnitude * rate - safeDuquan.Radius * rate;
                    var showWidth = miniMapRepresentWHByRice * rate;
                    var rect      = lineImage.uvRect;
                    if (width > showWidth)
                    {
                        if (lastWidth > width)
                        {
                            rect.y -= (lastWidth - width) / 16;
                        }
                        else if (lastWidth < width)
                        {
                            rect.y -= (lastWidth - width) / 16;
                        }

                        rect.y    = rect.y % 1;
                        lastWidth = width;
                        width     = showWidth;
                    }
                    else
                    {
                        rect.height = width / 16;
                    }
                    lineRT.sizeDelta = new Vector2(2, width);
                    lineImage.uvRect = rect;


                    //控制pivot
                    //                    lineRT.pivot = new Vector2(0.5f, - playItemModelWidth / (2 * width));
                    lineRT.pivot            = new Vector2(1f, 1f);
                    lineRT.anchoredPosition = selfPlayPos * rate;
                }
            }
            else
            {
                UIUtils.SetActive(tran, false);
            }
        }
Ejemplo n.º 4
0
        public void UpdateDuQuanAndSafe(Transform curDuquanRoot, Transform safeDuquanRoot, Transform miniDisTran, Transform curBombAreaRoot)
        {
            var data = adapter;

            if (data != null)
            {
                curDuquan  = data.CurDuquan;
                safeDuquan = data.NextDuquan;

                if (SharedConfig.IsOffline)
                {
//                    UIUtils.SetActive(curDuquanRoot, true);
//                    UIUtils.SetActive(safeDuquanRoot, true);
                    UIUtils.SetActive(miniDisTran, true);
//                    if(UpdateSafe != null)
//                        UpdateSafe();
//                    if(UpdateDuquan != null)
//                        UpdateDuquan();
                    if (UpdataMiniDis != null)
                    {
                        UpdataMiniDis();
                    }
                }
                else
                {
//                    if (curDuquan.Level != adapter.OffLineNum && curDuquan.Radius != 0)
//                    {
//                        UIUtils.SetActive(curDuquanRoot, true);
//                        if (UpdateDuquan != null)  UpdateDuquan();
//                    }
//                    else
//                        UIUtils.SetActive(curDuquanRoot, false);
//
//                    if (safeDuquan.Level != adapter.OffLineNum && safeDuquan.Radius != 0)
//                    {
//                        UIUtils.SetActive(safeDuquanRoot, true);
//                        if (UpdateSafe != null) UpdateSafe();
//                    }
//                    else
//                        UIUtils.SetActive(safeDuquanRoot, false);

                    if (safeDuquan.Level != adapter.OffLineNum && safeDuquan.Radius != 0)
                    {
                        UIUtils.SetActive(miniDisTran, true);
                        if (UpdataMiniDis != null)
                        {
                            UpdataMiniDis();
                        }
                    }
                    else
                    {
                        UIUtils.SetActive(miniDisTran, false);
                    }
                }

                //轰炸区
                if (curBombAreaInfo == null || data.BombArea.Num != curBombAreaInfo.Num)
                {
                    curBombAreaInfo = data.BombArea;
                }

                if (SharedConfig.IsOffline)
                {
                    UIUtils.SetActive(curBombAreaRoot, true);
                    if (UpdateBombArea != null)
                    {
                        UpdateBombArea();
                    }
                }
                else
                {
                    if (curBombAreaInfo.Num != -1 && curBombAreaInfo.Radius != 0)
                    {
                        UIUtils.SetActive(curBombAreaRoot, true);
                        if (UpdateBombArea != null)
                        {
                            UpdateBombArea();
                        }
                    }
                    else
                    {
                        UIUtils.SetActive(curBombAreaRoot, false);
                    }
                }
            }
        }