void LoadLevel(Level level) { currentLevel = level; Time.timeScale = 0f; world = GameObject.FindGameObjectWithTag("World").GetComponent <WorldManager>(); float yInterval = -3f; //TmxMap map = new TmxMap(level.MapFilePath); TmxMap map = new TmxMap(level.MapFile.text, "rnd"); TileManager.main.Init(map.Width, map.Height); for (int i = 0; i < map.Layers.Count; i++) { TmxLayer layer = map.Layers[i]; TileType tileType = (TileType)GameManager.IntParseFast(layer.Properties["TileType"]); if (tileType == TileType.Wall) { for (int x = 0; x < map.Width; x++) { for (int z = 0; z < map.Height; z++) { int tileId = layer.Tiles[(map.Height - z - 1) * map.Width + x].Gid - 1; if (tileId == -1) { continue; } GameObject wallBlock = (GameObject)Instantiate(wallBlockPrefab, new Vector3(x, wallBlockPrefab.transform.position.y, z), Quaternion.identity); wallBlock.transform.SetParent(world.WallContainer, false); wallBlock.gameObject.isStatic = true; } } } TiledMesh tiledMesh = Instantiate(tiledMeshPrefab); if (tileType == TileType.Hole) { tiledMesh.transform.position = new Vector3(tiledMesh.transform.position.x, tiledMesh.transform.position.y + yInterval, tiledMesh.transform.position.z); tiledMesh.gameObject.tag = "Hole"; } if (tileType == TileType.Bottom) { tiledMesh.transform.position = new Vector3(tiledMesh.transform.position.x, tiledMesh.transform.position.y + yInterval, tiledMesh.transform.position.z); } tiledMesh.transform.parent = world.transform; tiledMesh.Init(map.Width, map.Height, layer, level.MapMaterial); } foreach (TmxObjectGroup group in map.ObjectGroups) { foreach (TmxObjectGroup.TmxObject tmxObject in group.Objects) { int objectType = GameManager.IntParseFast(tmxObject.Properties["ObjectType"]); if ((ObjectType)objectType == ObjectType.PlayerSpawn) { SpawnPlayer((int)tmxObject.X / tileSize, map.Height - (int)tmxObject.Y / tileSize); } else { GenericObject genericObject = Instantiate(objectPrefabs[objectType]); genericObject.transform.parent = world.transform; Debug.Log(objectType + ": " + (int)objectPrefabs[objectType].transform.position.y); genericObject.Init((int)tmxObject.X / tileSize, objectPrefabs[objectType].transform.position.y, map.Height - (int)tmxObject.Y / tileSize, (ObjectType)objectType, tmxObject.Properties); } } } Time.timeScale = 1f; }