示例#1
0
        /// <summary>
        ///     随机设置图片大小,用于前后分层效果与星空效果
        /// </summary>
        /// <param name="size"></param>
        /// <param name="displayFactor"></param>
        /// <returns></returns>
        public Vector2 ResetTexture(Vector2 originVector2)
        {
            //图片宽高
            float w = originVector2.x;
            float h = originVector2.y;
            //组件宽高
            float width;
            float height;

            if (w >= h)
            {
                float minW = _manager.managerConfig.ItemSizeMinWidthFactor * _manager.GetScreenRect().x;
                float maxW = _manager.managerConfig.ItemSizeMaxWidthFactor * _manager.GetScreenRect().x;

                //宽固定
                width  = Random.Range(minW, maxW);
                height = h / w * width;
            }
            else
            {
                float minH = _manager.managerConfig.ItemSizeMinHeightFactor * _manager.GetScreenRect().y;
                float maxH = _manager.managerConfig.ItemSizeMaxHeightFactor * _manager.GetScreenRect().y;

                //高固定
                height = Random.Range(minH, maxH);
                width  = w / h * height;
            }
            width  = (int)width;
            height = (int)height;
            return(new Vector2(width, height));
        }
示例#2
0
        private FlockAgent CreateNewAgent(bool randomZ)
        {
            if (!randomZ)
            {
                //Debug.Log("添加星空块。");
            }


            // 获取数据
            //FlockData data = _daoService.GetFlockData(_dataType,_manager);\

            FlockData data = _daoService.GetFlockDataByScene(_dataType, _manager.SceneIndex);

            // 获取出生位置
            Vector2 randomPosition = UnityEngine.Random.insideUnitSphere;

            Vector3 position = new Vector3();

            position.x = (randomPosition.x / 2 + 0.5f) * _manager.GetScreenRect().x;
            position.y = (randomPosition.y / 2 + 0.5f) * _manager.GetScreenRect().y;


            // 获取长宽
            Sprite logoSprite = data.GetCoverSprite();
            float  width      = _sceneUtil.ResetTexture(new Vector2(logoSprite.rect.width, logoSprite.rect.height)).x;
            float  height     = _sceneUtil.ResetTexture(new Vector2(logoSprite.rect.width, logoSprite.rect.height)).y;

            //FlockAgent go = _itemFactory.Generate(position.x, position.y, position.x, position.y, 0, 0,
            // width, height, data, AgentContainerType.StarContainer);
            FlockAgent go = FlockAgentFactoryInstance.Generate(_manager, position, AgentContainerType.StarContainer,
                                                               position.x, position.y, 0, 0, width, height, data, _sceneConfig.daoTypeEnum);

            go.UpdateImageAlpha(0);

            // 星空效果不会被物理特效影响
            //go.CanEffected = false;
            go.flockStatus  = FlockStatusEnum.STAR;
            go.isStarEffect = true;

            // 设置Z轴

            float z;

            if (randomZ)
            {
                z = Mathf.Lerp(_manager.cutEffectConfig.StarEffectOriginPoint, _manager.cutEffectConfig.StarEffectEndPoint,
                               UnityEngine.Random.Range(0f, 1f));
            }
            else
            {
                z = _manager.cutEffectConfig.StarEffectOriginPoint;
            }

            go.GetComponent <RectTransform>().anchoredPosition3D = go.GetComponent <RectTransform>().anchoredPosition3D + new Vector3(0, 0, z);
            go.Z    = z;
            go.name = "Agent-" + Mathf.RoundToInt(go.Z);

            _activeAgents.Add(go);

            return(go);
        }