58 lines of C# code to create 5000 “magic” cubes.
I’ve been learning a lot over the last three weeks about terrain generation and manipulation of terrain data. So I thought it was about time to actually cover the basics!
Cube Controller
using UnityEngine; public class CubeController : MonoBehaviour { public Rigidbody rb; private float maxRaycastDistance = 0.5f; public float jumpVelocity; public Color cubeColour; public Color RandomColor() { return new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f)); } void Start() { jumpVelocity = Random.Range(10f, 30f); rb = GetComponent<Rigidbody>(); cubeColour = RandomColor(); GetComponent<MeshRenderer>().material.color = cubeColour; } void FixedUpdate() { if (Input.GetKey(KeyCode.Space) && isGrounded()) { Vector3 jumpVel = new Vector3(0, jumpVelocity, 0); rb.velocity = rb.velocity + jumpVel; } float hor = Input.GetAxis("Horizontal"); float vert = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(hor * Time.deltaTime, 0, vert * Time.deltaTime); rb.MovePosition(transform.position + movement); } bool isGrounded() { return Physics.Raycast(transform.position, Vector3.down, maxRaycastDistance); } }
Cube GeneratorĀ
using UnityEngine; public class CubeGenerator : MonoBehaviour { public GameObject myPrefab; float spread = 50f; void Start() { Vector3 spawn = new Vector3(512f, 50f, 512f); for (int i = 0; i < 5000; i++) { float random = Random.Range(-spread, spread); GameObject thing = Instantiate(myPrefab, (spawn + new Vector3(random, random, random)), Quaternion.identity) as GameObject; } } }