Пример #1
0
    private void CreateBoard()
    {
        Vector3 offset = transform.position - new Vector3(board.dimension * board.distance / 2.0f - 1f, board.dimension * board.distance / 2.0f + 5f, 0);

        System.Random rand = new System.Random();
        for (int i = 0; i < board.dimension; i++)
        {
            for (int j = 0; j < board.dimension; j++)
            {
                GameObject    newTile         = Instantiate(board.tilePrefab);
                List <Sprite> possibleSprites = new List <Sprite>(board.sprites);
                if (board.BLOCK <= 0)
                {
                    possibleSprites.Remove(board.sprites[5]);
                }
                Sprite left1 = board.GetSpriteAt(j - 1, i);
                Sprite left2 = board.GetSpriteAt(j - 2, i);
                if (left1 != null && left1 == left2)
                {
                    possibleSprites.Remove(left1);
                }

                Sprite down1 = board.GetSpriteAt(j, i - 1);
                Sprite down2 = board.GetSpriteAt(j, i - 2);
                if (down1 != null && down1 == down2)
                {
                    possibleSprites.Remove(down1);
                }

                SpriteRenderer renderer = newTile.GetComponent <SpriteRenderer>();

                int num = rand.Next(possibleSprites.Count);
                renderer.sprite = possibleSprites[num];
                if (renderer.sprite == board.sprites[5])
                {
                    board.BLOCK--;
                }

                TileController tile = newTile.AddComponent <TileController>();
                tile.SetPosition(new Vector2Int(j, i));

                newTile.transform.SetParent(transform);
                newTile.transform.position = new Vector3(j * board.distance, i * board.distance, 0) + offset;
                board.pos[j, i]            = newTile.transform.position;
                board.allTiles[j, i]       = newTile;
            }
        }
    }