Exemple #1
0
    /**
     * 可以增加参数
     * 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);
    }