I've made a tiledrawer, which takes a list of sprites, and then randomly picks one of those sprites, and draws it in a 2D grid.
This works, but I have a feeling I'm not doing it the right way. When the camera moves over the area, the tiles look choppy.
My code for the generator:
public GameObject tileType;
public Sprite[] sprites;
private Grid grid;
public int gridRadius = 100;
// Start is called before the first frame update
void Start()
{
if (sprites == null || sprites.Length == 0)
{
return;
}
var tileSize = 0.5f;
var tileScale = 1.56f;
var half = gridRadius / 2;
var beginX = half * tileSize * -1;
var beginY = half * tileSize * -1;
var beginOffset = new Vector3(beginX, beginY, 0);
grid = GameObject.FindObjectOfType<Grid>();
var offset = new Vector3(0.25f, 0.25f, 0) + beginOffset;
for (int x = 0; x < gridRadius; x++)
{
for (int y = 0; y < gridRadius; y++)
{
var tileOffset = offset + new Vector3(tileSize * x, tileSize * y, 0);
var tile = Instantiate(tileType, transform.position + tileOffset, Quaternion.identity, grid.transform);
tile.transform.rotation = transform.rotation;
var renderer = tile.GetComponent<SpriteRenderer>();
tile.transform.localScale = new Vector3(1.5f, 1.5f, 0);
renderer.transform.localScale = new Vector3(tileScale, tileScale, 0);
renderer.sprite = RandomSprite();
}
}
}
private Sprite RandomSprite()
{
var rand = Random.Range(0, sprites.Length - 1);
return sprites[rand];
}
// Update is called once per frame
void Update()
{
}
When I say "choppy", I mean the tiles sometimes generates lines between them, sometimes not, even though there is not space between them.
What is the right way of drawing a grid of tiles, from a list of sprites?