Example #1
0
    public void Load(int stage_id)
    {
        switch (stage_id)
        {
        case 1:
            IMapData mp01 = new Map01();
            currentMap = mp01;
            MakeMap(mp01);
            break;

        case 2:
            IMapData mp02 = new Map02();
            currentMap = mp02;
            MakeMap(mp02);
            break;

        case 3:
            IMapData mp03 = new Map03();
            currentMap = mp03;
            MakeMap(mp03);
            break;

        case 4:
            IMapData mp04 = new Map04();
            currentMap = mp04;
            MakeMap(mp04);
            break;

        case 5:
            IMapData mp05 = new Map05();
            currentMap = mp05;
            MakeMap(mp05);
            break;

        case 6:
            IMapData mp06 = new Map06();
            currentMap = mp06;
            MakeMap(mp06);
            break;

        case 7:
            IMapData mp07 = new Map07();
            currentMap = mp07;
            MakeMap(mp07);
            break;
        }
    }
Example #2
0
    private void MakeMap(IMapData mapData)
    {
        RotateController.getInstance().clearRotatings();

        GameObject[] floor = GameObject.FindGameObjectsWithTag("Floor");
        foreach (GameObject obj in floor)
        {
            GameObject.Destroy(obj);
        }
        GameObject[] end = GameObject.FindGameObjectsWithTag("Endpoint");
        foreach (GameObject obj in end)
        {
            GameObject.Destroy(obj);
        }


        foreach (Vector3 pos in mapData.CubePos)
        {
            GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
            cube.tag  = "Floor";
            cube.name = "C" + pos.x + pos.y + pos.z;    // 'C'ube
            cube.transform.position = pos;
        }
        for (int i = 0; i < mapData.SlopePos.Length; i++)
        {
            GameObject slope = makeSlope();
            Vector3    pos   = mapData.SlopePos[i];
            slope.tag  = "Floor";
            slope.name = "S" + pos.x + pos.y + pos.z;   // 'S'lope
            slope.transform.position = pos;
            slope.transform.rotation = mapData.SlopeRot[i];
        }
        foreach (RotatingObject data in mapData.RotObj)
        {
            GameObject obj = GameObject.Find(data.name);
            if (obj == null)
            {
                continue;
            }
            Rotating script = obj.AddComponent <Rotating>() as Rotating;
            script.point     = data.point;
            script.axis      = data.axis;
            script.PlayerRot = data.playerRot;
            RotateController.getInstance().addRotating(script, data.groupId);
        }
        {
            GameObject player = GameObject.Find("Player");
            player.transform.position = new Vector3(mapData.PlayerStart.x, mapData.PlayerStart.y + 1, mapData.PlayerStart.z); //
            player.GetComponent <MoveCharacter>().Init();
        }
        //关卡终点
        {
            GameObject endpoint = (GameObject)Resources.Load("Prefabs/endpoint");
            endpoint.tag = "Endpoint";
            endpoint.transform.position = mapData.GameEnd;
            Object.Instantiate(endpoint);
        }
        //升降
        {
            //************************
            //ImapData的底层数据结构设计比较糟糕,修改会影响到其他地图,因此可升降平台在此写死
            //************************
            if (id == 3)
            {
                Map03      mapData03 = (Map03)mapData;
                GameObject movePoint = (GameObject)Resources.Load("Prefabs/movepoint");
                movePoint.transform.position = mapData03.MovePoint;
                Object.Instantiate(movePoint);
            }
        }
        RotateController.getInstance().select();
    }