private void CubeSpawner() { float xOffset = 1f; float yOffset = 0.15f; float zOffset = -4f; int modIndex = 0; int modCounter = 0; for (int i = 0; i < blocksFromImage.Count; i++) { if (i % 10 == 0) { modCounter++; } modIndex = i % 10; modCounter = modCounter % 10; StartCube tmpCube = Instantiate(startCube, startCubeTransform); tmpCube.GetComponent <MeshRenderer>().enabled = false; tmpCube.transform.position = new Vector3(xOffset - modIndex * 0.35f, yOffset + modCounter * 0.5f, zOffset); startedCubes.Add(tmpCube); } }
public List <Waypoint> GetPath() { if (path.Count == 0) { LoadBlocks(); StartCube.SetTopColor(Color.green); EndCube.SetTopColor(Color.red); BreadthFirstSearch(); CreatePath(); } return(path); }
void CreateBlocks() { switch (startCubeShapes) { case 1: float xOffset = 1f; float yOffset = 0.15f; float zOffset = -4f; int modIndex = 0; int modCounter = 0; for (int i = 0; i < blocksFromImage.Count; i++) { if (i % 10 == 0) { modCounter++; } modIndex = i % 10; modCounter = modCounter % 10; StartCube tmpCube = Instantiate(startCube, startCubeTransform); tmpCube.GetComponent <Collider>().enabled = false; tmpCube.transform.position = new Vector3(xOffset - modIndex * 0.35f, yOffset + modCounter * 0.5f, zOffset); startedCubes2.Add(tmpCube); } break; case 2: int maxHeight = 9; for (int height = 0; height < maxHeight; height++) { int length = maxHeight - height; for (int x = -length; x <= length; x++) { for (int z = -length; z <= length; z++) { if (Mathf.Abs(x) == length || Mathf.Abs(z) == length) { StartCube tmpCube2 = Instantiate(startCube, startCubeTransform); tmpCube2.GetComponent <Collider>().enabled = false; tmpCube2.transform.position = new Vector3(x * .305f, height * .305f, -4 - z * .305f); startedCubes2.Add(tmpCube2); } } } } break; case 3: int fillSize = 10; float innerRadius = 3; float thickness = 3; for (int i = -fillSize; i < fillSize; i++) { for (int j = -fillSize; j < fillSize; j++) { for (int k = -fillSize; k < fillSize; k++) { Vector3 cubePosition = new Vector3(i, j, k); Vector3 cubeDirection = new Vector3(cubePosition.x, 0, cubePosition.z); cubeDirection.Normalize(); Vector3 donutCenter = cubeDirection * (innerRadius + thickness); if (Vector3.Distance(cubePosition, donutCenter) < thickness) { StartCube tmpCube3 = Instantiate(startCube, startCubeTransform); tmpCube3.transform.position = new Vector3(i * .325f, (.3f * thickness) - .15f + j * .325f, -4 - k * .325f); startedCubes2.Add(tmpCube3); } } } } break; } }