/** * 可以增加参数 * 1.几块组成 * 2.List 主路数组 * 3.类型 * 平地 * 起伏 * 上 * 下 * 间隔有刺的 * 间隔 并且 有移动地板连接的 * */ //普通 有树 的平路 很少会波动 上下起伏 1平地 2上升 3下降 void pingdisenlinCJ(List <string> dibanNameList, int landNums, List <string> shuList, List <string> jyjList, List <string> zyjList, List <string> dqjList, List <string> qjdList, int type = 1) { //获取 模组的地板 数量 //int LandNums = 2 + GlobalTools.GetRandomNum(4); //List<string> landNames = new List<string> { "1", "2" }; int LandNums = landNums; //起点和终点 放置共同的大型背景 Vector2 qidian = Vector2.zero; Vector2 zhongdian = Vector2.zero; Vector2 lianjiedian = Vector2.zero; for (var i = 0; i < LandNums; i++) { string _name = dibanNameList[GlobalTools.GetRandomNum(dibanNameList.Count)]; //(1+GlobalTools.GetRandomNum(landNames.Count)); //print("_name "+_name); GameObject lu = GlobalTools.GetGameObjectByName(_name); //print("lu "+lu); lu.transform.parent = GlobalTools.FindObjByName("maps").transform; //寻找连接点 if (GlobalTools.tempRecordMapObj.tag == "men") { lianjiedian = GlobalTools.tempRecordMapObj.transform.Find("ljd").position; } else { lianjiedian = GlobalTools.GetXMapLJDian(GlobalTools.tempRecordMapObj); } float __x = 0; float __y = 0; //设置路的位置 if (type == 1) { lu.transform.position = lianjiedian; GlobalTools.SetCameraKuai(lu, 7); } else if (type == 2) { //上坡型 //不能在一起做 只能分类做 起伏的地板 远景 前景都缩小范围 放置穿帮 if (GlobalTools.tempRecordMapObj.tag != "men") { __x = lianjiedian.x; float h = GlobalTools.GetHasPointMapObjH(GlobalTools.tempRecordMapObj); float tempH = GlobalTools.GetRandomDistanceNums(h); tempH = tempH >= h * 0.5f ? tempH : h * 0.5f; __y = lianjiedian.y + tempH; lu.transform.position = new Vector2(__x, __y); } else { lu.transform.position = lianjiedian; } if (i != LandNums - 1) { lu.transform.Find("ying").transform.position = new Vector2(lu.transform.Find("ying").transform.position.x + 0.5f, lu.transform.Find("ying").transform.position.y); } GlobalTools.SetCameraKuai(lu, 7); } else if (type == 3) { //下坡型 if (GlobalTools.tempRecordMapObj.tag != "men") { __x = lianjiedian.x; float h = GlobalTools.GetHasPointMapObjH(GlobalTools.tempRecordMapObj); float tempH = GlobalTools.GetRandomDistanceNums(h); tempH = tempH >= h * 0.5f ? tempH : h * 0.5f; __y = lianjiedian.y - tempH; lu.transform.position = new Vector2(__x, __y); } else { lu.transform.position = lianjiedian; } if (i != LandNums - 1) { GlobalTools.SetCameraKuai(lu, 7, "down", 1); } lu.transform.Find("ying").transform.position = new Vector2(lu.transform.Find("ying").transform.position.x - 0.5f, lu.transform.Find("ying").transform.position.y); } //一个模块地图的 起点和终点 if (i == 0) { qidian = lu.transform.Find("tl").transform.position; //new Vector2(lu.transform.FindChild("tl").position.x, lu.transform.FindChild("rd").position.y); //print("qidian ----------------------------------------------------------------------> " + qidian + " ????????????????? " + lu.transform.Find("tl").transform.position + " localposition " + lu.transform.Find("tl").transform.localPosition); zhongdian = lu.transform.Find("rd").transform.position; //new Vector2(lu.transform.FindChild("tl").position.x, lu.transform.FindChild("rd").position.y); } else { if (lu.transform.Find("tl").position.x < qidian.x) { qidian = new Vector2(lu.transform.Find("tl").transform.position.x, qidian.y); } if (lu.transform.Find("tl").position.y > qidian.y) { qidian = new Vector2(qidian.x, lu.transform.Find("tl").transform.position.y); } if (lu.transform.Find("rd").position.x > zhongdian.x) { zhongdian = new Vector2(lu.transform.Find("rd").transform.position.x, zhongdian.y); } if (lu.transform.Find("rd").position.y < zhongdian.y) { zhongdian = new Vector2(zhongdian.x, lu.transform.Find("rd").transform.position.y); } //print("qidian ----------------------------------------------------------------------> " + qidian + " ?????????????????2222222222222222222222 " + lu.transform.Find("tl").transform.position + " localposition " + lu.transform.Find("tl").transform.localPosition); } int sd = 0; int qishiSD = 12; //设置地板深度 这里要查找上一个地板的深度 防止新板块 地图深度重叠 if (GlobalTools.tempRecordMapObj.tag != "men") { if (qishiSD == 0 && GlobalTools.tempRecordMapObj.GetComponent <Ferr2DT_PathTerrain>() != null) { qishiSD = GlobalTools.tempRecordMapObj.GetComponent <Ferr2DT_PathTerrain>().GetComponent <Renderer>().sortingOrder + 1; } } sd = qishiSD + i % 7; //GlobalTools.SetMapObjOrder(lu, sd); //print("lu-name-------- " + lu.transform.Find("diban").name); //print("lu------------->>>>>>>>> " + lu.transform.Find("diban").GetComponent<Ferr2DT_PathTerrain>().GetComponent<Renderer>().sortingOrder); lu.transform.Find("diban").GetComponent <Ferr2DT_PathTerrain>().GetComponent <Renderer>().sortingOrder = sd; //小几率 路面不平 波动 //储存 路 GlobalTools.SaveGameObj(lu); //生成地板的景 雾效果 等 //景 树 Shu(lu.transform, shuList, true); if (type == 1) { //背面近景 前景 景 草 石头 什么的 //Qianjing(lu.transform,"",-3,-5); QianjingD(lu.transform, qjdList, 50, -0.2f, -0.6f); QianjingD(lu.transform, qjdList, 18, -1.8f); // 前面的远景 蔓藤 之类的 DaqianjingYJ(lu.transform, dqjList); //中远景 if (i == 0 || i == LandNums - 1) { GetJYJ(lu.transform, jyjList, 0.6f); GetJYJ(lu.transform, jyjList, 0.4f, -35, 1.2f, 5f); GetZYJ(lu.transform, zyjList, 0.8f); } else { GetJYJ(lu.transform, jyjList, 2); GetJYJ(lu.transform, jyjList, 3, -45, 1.2f, 5f); GetZYJ(lu.transform, zyjList, 3.5f); } //粒子落叶 GetLiziLY(lu.transform, ScreenDate.liziLY_1, 2, -2.5f); GetLiziLY(lu.transform, ScreenDate.liziWu_1, 2, 0f); } else if (type == 2 || type == 3) { //Qianjing(lu.transform,"",-1,0,0,true); QianjingD(lu.transform, qjdList, 50, -0.2f, -0.6f); QianjingD(lu.transform, qjdList, 16, -0.8f); GetJYJ(lu.transform, jyjList, 0.4f); GetJYJ(lu.transform, jyjList, 1.5f, -45, 1.2f, 5f); GetLiziLY(lu.transform, ScreenDate.liziLY_1, 2, -2.5f); GetLiziLY(lu.transform, ScreenDate.liziWu_1, 2, 0f); } GlobalTools.tempRecordMapObj = lu; //这里做为记录 和连接点 来使用 //生成的地图记录到本地 } //记录长度 x1 x2 y //全面的 远景 雾 背景树 远景树 //雾 控制雾的宽度 //雾 Color color1 = new Color(0.1f, 1f, 1f, 0.1f); GetWu("", qidian, zhongdian, -30, color1); Color color2 = new Color(1f, 1f, 1f, 0.1f); GetWu("", qidian, zhongdian, -60, color2); }