Mercurial > hg > Game > Games
diff Orchestland/Assets/LeapMotion+OVR/DemoResources/Scripts/RandomBlocksGenerator.cs @ 1:f7675884f2a1
Add Orchestland project
author | Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2015 23:09:20 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Orchestland/Assets/LeapMotion+OVR/DemoResources/Scripts/RandomBlocksGenerator.cs Fri Jul 17 23:09:20 2015 +0900 @@ -0,0 +1,99 @@ +using UnityEngine; +using System.Collections; +using System.Linq; + +public class RandomBlocksGenerator : MonoBehaviour { + public GameObject CubePrimitive; + public float minRadius; + public float maxRadius; + public int numberOfBlocks; + public float size; + + private Color[] list_of_colors = + { + //new Color(1.00f, 1.00f, 0.94f), // (255,255,240) Ivory + //new Color(0.96f, 0.96f, 0.86f), // (245,245,220) Beige + //new Color(0.96f, 0.87f, 0.70f), // (245,222,179) Wheat + //new Color(0.82f, 0.71f, 0.55f), // (210,180,140) Tan + //new Color(0.76f, 0.69f, 0.57f), // (195,176,145) Khaki + //new Color(0.75f, 0.75f, 0.75f), // (192,192,192) Silver + //new Color(0.50f, 0.50f, 0.50f), // (128,128,128) Gray + //new Color(0.27f, 0.27f, 0.27f), // (070,070,070) Charcoal + new Color(0.00f, 0.00f, 1.00f), // (000,000,255) Navy Blue + new Color(0.02f, 0.30f, 0.62f), // (008,076,158) Royal Blue + new Color(0.00f, 0.00f, 0.80f), // (000,000,205) Medium Blue + new Color(0.00f, 0.50f, 1.00f), // (000,127,255) Azure + new Color(0.00f, 1.00f, 1.00f), // (000,255,255) Cyan + new Color(0.50f, 1.00f, 0.83f), // (127,255,212) Aquamarine + new Color(0.00f, 0.50f, 0.50f), // (000,127,127) Teal + new Color(0.13f, 0.55f, 0.13f), // (034,139,034) Forest Green + new Color(0.50f, 0.50f, 0.00f), // (127,127,000) Olive + new Color(0.50f, 1.00f, 0.00f), // (127,255,000) Chartreuse + new Color(0.75f, 1.00f, 0.00f), // (192,255,000) Lime + new Color(1.00f, 0.84f, 0.00f), // (255,215,000) Golden + new Color(0.85f, 0.65f, 0.13f), // (218,165,032) Goldenrod + new Color(1.00f, 0.50f, 0.31f), // (255,127,080) Coral + new Color(0.98f, 0.50f, 0.45f), // (250,128,114) Salmon + new Color(0.99f, 0.06f, 0.75f), // (252,015,192) Hot Pink + new Color(1.00f, 0.47f, 1.00f), // (255,119,255) Fuchsia + new Color(0.80f, 0.53f, 0.60f), // (204,136,153) Puce + new Color(0.88f, 0.69f, 1.00f), // (224,176,225) Mauve + new Color(0.71f, 0.49f, 0.86f), // (181,126,220) Lavender + new Color(0.52f, 0.19f, 0.47f), // (132,049,121) Plum + new Color(0.29f, 0.00f, 0.51f), // (075,000,130) Indigo + new Color(0.50f, 0.00f, 0.00f), // (127,000,000) Maroon + new Color(0.86f, 0.08f, 0.24f) // (220,020,060) Crimson + }; + + private void Reset() + { + if (maxRadius < minRadius) + return; + + GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); + sphere.transform.parent = transform; + sphere.transform.localScale = Vector3.one * (maxRadius + size * 2.0f) * 2.0f; + sphere.transform.localPosition = Vector3.zero; + + Mesh sphereMesh = sphere.GetComponent<MeshFilter>().mesh; + sphereMesh.triangles = sphereMesh.triangles.Reverse().ToArray(); + sphereMesh.RecalculateNormals(); + sphere.GetComponent<SphereCollider>().enabled = false; + Destroy(sphere.GetComponent<SphereCollider>()); + sphere.AddComponent<MeshCollider>(); + sphere.GetComponent<Renderer>().enabled = false; + + for (int i = 0; i < numberOfBlocks; ++i) + { + float radius = Random.Range(minRadius, maxRadius); + float theta = Random.Range(0.0f, 2 * Mathf.PI); + float phi = Random.Range(0.0f, 2 * Mathf.PI); + + Vector3 position = new Vector3( + radius * Mathf.Sin(theta) * Mathf.Cos(phi), + radius * Mathf.Sin(theta) * Mathf.Sin(phi), + radius * Mathf.Cos(theta) + ); + + GameObject cube = GameObject.Instantiate(CubePrimitive) as GameObject; + cube.transform.parent = transform; + cube.transform.rotation = Quaternion.Euler(Random.Range(0.0f, 360.0f), Random.Range(0.0f, 360.0f), Random.Range(0.0f, 360.0f)); + cube.transform.localScale = Vector3.one * size; + cube.transform.localPosition = position; + cube.AddComponent<Rigidbody>(); + cube.GetComponent<Rigidbody>().useGravity = false; + cube.SetActive(true); + + cube.GetComponent<Renderer>().material.color = list_of_colors[Random.Range(0,list_of_colors.Length - 1)]; + } + } + + // Use this for initialization + void Start () { + Reset(); + } + + // Update is called once per frame + void Update () { + } +}