/// <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)); }
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); }