using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; public class CubeController : TripsitterAve { public GameObject prefab; public float minSize = 2; public float maxSize = 4; void Start() { CreateCubes(0f, 0f, 0f, 100f, 50f, 100f); } // void Update() { // var spectrumData = GetSpectrumData(); // for (int i = 0; i < cubes.Count; i++) { // GameObject cube = cubes[i]; // float amp = spectrumData[i % SpectrumSize]; // // Vector3 scale = new Vector3(1.0f, 1.0f, 1.0f * amp); // // cubes[i].transform.localScale *= scale; // } // float avg = spectrumData.Sum() / SpectrumSize; // lightMat.SetFloat("_EmissiveIntensity", avg * 1000.0f); // } // bool IsLeft(GameObject cube) { // float up = cube.transform.up; // return up < yBottom && up > yTop; // } // bool IsRight(GameObject cube) { // float up = cube.transform.up; // return up < yBottom && up > yTop; // } // bool IsBottom(GameObject cube) { // float up = cube.transform.up; // return up < yBottom && up > yTop; // } // bool IsTop(GameObject cube) { // float up = cube.transform.up; // return up < yBottom && up > yTop; // } void CreateCubes(float currentX, float currentZ, float currentY, float xWidth, float yWidth, float zWidth) { float xMargin = 10; float yMargin = 5; float zMargin = 10; float xLeft = xMargin; float xRight = xWidth - xMargin; float yBottom = yMargin; float yTop = yWidth - yMargin; float zBack = zWidth - zMargin; while (currentY < yWidth) { while (currentZ < zWidth) { while (currentX < xWidth) { bool ok = currentX < xLeft || currentX > xRight || currentY < yBottom || currentY > yTop || currentZ > zBack; float size = Random.Range(minSize, maxSize); if (ok) { GameObject cube = GameObject.Instantiate(prefab); cube.transform.parent = gameObject.transform; cube.transform.localScale *= size; float x = currentX + (size / 2f); float y = currentY + (size / 2f); if (currentY > yTop) y = currentY - (size / 2f); float z = currentZ + (size / 2f); if (currentZ > zBack) z = currentZ - (size / 2f); cube.transform.Translate(x, y, z); // cubes.Add(cube); } currentX = currentX + size; } currentX = 0; currentZ = currentZ + maxSize; } currentZ = 0; currentY = currentY + maxSize; } } }