Хотел я сделать рандомную генерацию заднего фона по чанкам в TopDown игре, но всё пошло как-то криво и косою. А вот собственно мой говно-код:
using UnityEngine;
public class GameGeneration : MonoBehaviour { [SerializeField] private GameObject[] summerObject = new GameObject[4]; private GameObject[] chunk = new GameObject[9];
private void Start() { GenerationMap(); } private void GenerationMap() { for(float x = 0f; x < height; x += sizeOfChunk) { for(float y = 0f; y < weight; y += sizeOfChunk) { GenerationChunk(x, y); } } } private void GenerationChunk(float posX, float posY) { for(int i = 0; i < chunk.Length; i++) { generateNumber = Random.Range(0, summerObject.Length); chunk[i] = summerObject[generateNumber]; } SetChunk(posX, posY); } private void SetChunk(float posX, float posY) { Instantiate(chunk[0], new Vector2(posX--, posY++), Quaternion.identity); //размещение объекта в верхнем левом углу Instantiate(chunk[1], new Vector2(posX, posY++), Quaternion.identity); //размещение объекта в верхнем центральном углу Instantiate(chunk[2], new Vector2(posX++, posY++), Quaternion.identity); //размещение объекта в верхнем правом углу
Instantiate(chunk[3], new Vector2(posX--, posY), Quaternion.identity); //размещение объекта в центре слева Instantiate(chunk[middleOfChunk], new Vector2(posX, posY), Quaternion.identity); //размещение центрального объекта по центру Instantiate(chunk[5], new Vector2(posX++, posY), Quaternion.identity); //размещение объекта в центре справа
Instantiate(chunk[6], new Vector2(posX--, posY--), Quaternion.identity); //размещение объекта в нижним левом углу Instantiate(chunk[7], new Vector2(posX, posY--), Quaternion.identity); //размещение объекта в нижнем центральном углу Instantiate(chunk[8], new Vector2(posX++, posY--), Quaternion.identity); //размещение объекта в нижнем правос углу
} }
Ну ещё меня настораживает постоянное использование Instantiate. Подскажите, как исправить?