Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Voxelizer : MonoBehaviour {
  6. public int xSlices = 5;
  7. public int ySlices = 5;
  8. public int zSlices = 5;
  9. public GameObject Cube;
  10.  
  11. void Start () {
  12. Explode ();
  13. print ("Done");
  14. }
  15.  
  16. void Explode() {
  17. var mesh = Cube.GetComponent<MeshRenderer> ();
  18. var newCube = new GameObject ();
  19. newCube.transform.position = Cube.transform.position;
  20. newCube.transform.rotation = Cube.transform.rotation;
  21. newCube.transform.localScale = Cube.transform.localScale;
  22.  
  23. for (var i = 0; i < xSlices; ++i) {
  24. for (var j = 0; j < ySlices; ++j) {
  25. for (var k = 0; k < zSlices; ++k) {
  26. var smallCube = Instantiate(Cube, newCube.transform);
  27.  
  28. var x = Cube.transform.position.x;
  29. var y = Cube.transform.position.y;
  30. var z = Cube.transform.position.z;
  31.  
  32. var sliceSizeX = 2 * mesh.bounds.extents.x / xSlices + Mathf.Epsilon;
  33. x = x - mesh.bounds.extents.x + sliceSizeX / 2 + i * sliceSizeX;
  34.  
  35. var sliceSizeY = 2 * mesh.bounds.extents.y / ySlices + Mathf.Epsilon;
  36. y = y - mesh.bounds.extents.y + sliceSizeY / 2 + j * sliceSizeY;
  37.  
  38. var sliceSizeZ = 2 * mesh.bounds.extents.z / zSlices + Mathf.Epsilon;
  39. z = z - mesh.bounds.extents.z + sliceSizeZ / 2 + k * sliceSizeZ;
  40.  
  41. smallCube.transform.position = new Vector3(x, y, z);
  42. smallCube.transform.localScale = new Vector3(1.0f/xSlices, 1.0f/ySlices, 1.0f/zSlices);
  43. smallCube.transform.localRotation = Quaternion.identity;
  44. }
  45. }
  46. }
  47.  
  48. Cube.SetActive (false);
  49. }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement