コード例 #1
0
        public static void BuildTileset(LDtkDataLayer layer, LDtkDataTile[] tiles, LDtkTilesetAssetCollection assets, Tilemap[] tilemaps)
        {
            LDtkDefinitionTileset definition = layer.IsAutoTilesLayer
                ? layer.Definition.AutoTilesetDefinition
                : layer.Definition.TileLayerDefinition;

            LDtkTilesetAsset asset = assets.GetAssetByIdentifier(definition.identifier);

            if (asset == null)
            {
                return;
            }

            //figure out if we have already built a tile in this position. otherwise, build up to the next tilemap
            Dictionary <Vector2Int, int> builtTileLayering = new Dictionary <Vector2Int, int>();

            foreach (LDtkDataTile tileData in tiles)
            {
                Vector2Int px           = tileData.px.ToVector2Int();
                int        tilemapLayer = GetTilemapLayerToBuildOn(builtTileLayering, px, tilemaps.Length - 1);


                BuildTile(layer, tileData, asset, tilemaps[tilemapLayer]);
            }
        }
コード例 #2
0
        private static void BuildTile(LDtkDataLayer layer, LDtkDataTile tileData, LDtkTilesetAsset asset, Tilemap tilemap)
        {
            Vector2Int coord = tileData.LayerPixelPosition / layer.__gridSize;

            coord = LDtkToolOriginCoordConverter.ConvertCell(coord, layer.__cHei);

            Sprite tileSprite = GetTileFromTileset(asset.ReferencedAsset, tileData.SourcePixelPosition, layer.__gridSize);

            Tile tile = ScriptableObject.CreateInstance <Tile>();

            tile.colliderType = Tile.ColliderType.None;
            tile.sprite       = tileSprite;

            Vector3Int co = new Vector3Int(coord.x, coord.y, 0);



            //Tilemap mapToBuildOn = tilemap;

            tilemap.SetTile(co, tile);
            SetTileFlips(tilemap, tileData, coord);
        }