using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PuzzleCreator : MonoBehaviour
{
[SerializeField] private Sprite PuzzleImage; // Картинка
[SerializeField] private Transform Parent; // Ну тут понятно
[SerializeField] private Transform PuzzlePlace; // Положение в которое будут складываться пазлы
[SerializeField] private Vector2Int GridSize; // Сетка
private void SplitImage()
{
Texture2D Texture = PuzzleImage.texture;
int TextureWidth = Texture.width;
int TextureHeigth = Texture.height;
for (int i = 0; i < GridSize.y; i++)
{
for (int j = 0; j < GridSize.x; j++)
{
// Создаём спрайт, ну или вырезаем его из нашей картинки, ставим ориджин в центр, но это не квадратики, а прямоугольники!
Sprite PuzzlePiece_Sprite = Sprite.Create(
Texture,
new Rect((j * TextureWidth) / GridSize.x, (i * TextureHeigth) / GridSize.y, TextureWidth / GridSize.x, TextureHeigth / GridSize.y),
new Vector2(0.5f, 0.5f)
);
// Добавляем колалйдер, ставим куда надо, меняем название, и находим отца
GameObject PuzzlePiece_GameObject = new GameObject($"PuzzlePiece_{i}_{j}");
PuzzlePiece_GameObject.transform.position = new Vector3(PuzzlePlace.position.x, PuzzlePlace.position.y, 0f);
PuzzlePiece_GameObject.AddComponent<SpriteRenderer>().sprite = PuzzlePiece_Sprite;
PuzzlePiece_GameObject.AddComponent<BoxCollider2D>();
PuzzlePiece_GameObject.transform.SetParent(Parent);
}
}
// Ура, победа!
Debug.Log("Puzzle splited!");
}
void Start()
{
SplitImage();
}
}