// Use this for initialization void Start() { gameObject.AddComponent <MeshFilter>(); gameObject.AddComponent <MeshRenderer>(); gameObject.GetComponent <MeshRenderer>().material = GameObject.Find("SunMat").GetComponent <MeshRenderer>().material; randGen = new System.Random(seed); cam = GameObject.Find("Camera"); vert = new Vector3[4 * numberOfParticles]; uv = new Vector2[4 * numberOfParticles]; normals = new Vector3[4 * numberOfParticles]; trians = new int[6 * numberOfParticles]; particles = new SingleParticle[numberOfParticles]; //ставлю точки полигоны треугольники и т.п. for (int i = 0; i < numberOfParticles; i++) { int index = i * 4; vert[index + 0] = new Vector3(-1f, 0f, -1f); vert[index + 1] = new Vector3(1f, 0f, -1f); vert[index + 2] = new Vector3(-1f, 0f, 1f); vert[index + 3] = new Vector3(1f, 0f, 1f); uv[index + 0] = new Vector2(0f, 0f); uv[index + 1] = new Vector2(1f, 0f); uv[index + 2] = new Vector2(0f, 1f); uv[index + 3] = new Vector2(1f, 1f); normals[index + 0] = new Vector3(0f, 1f, 0f); normals[index + 1] = new Vector3(0f, 1f, 0f); normals[index + 2] = new Vector3(0f, 1f, 0f); normals[index + 3] = new Vector3(0f, 1f, 0f); trians[i * 6 + 0] = index + 0; trians[i * 6 + 1] = index + 2; trians[i * 6 + 2] = index + 1; trians[i * 6 + 3] = index + 1; trians[i * 6 + 4] = index + 2; trians[i * 6 + 5] = index + 3; particles[i] = new SingleParticle(); // распределяю облачка по сфере случайным образом Vector3 position = new Vector3(0, 0, 0); position.Normalize(); position = position * radius; particles[i].position = position; } mesh = GetComponent <MeshFilter>().mesh; mesh.Clear(); mesh.vertices = vert; mesh.uv = uv; mesh.triangles = trians; mesh.normals = normals; mesh.RecalculateBounds(); }
// Use this for initialization void Start() { randGen = new System.Random(seed); cam = GameObject.Find("Camera"); radius = randGen.Next((int)(planetRadius * 0.1f), (int)(planetRadius * 0.25f)); vert = new Vector3[4 * numberOfParticles]; uv = new Vector2[4 * numberOfParticles]; normals = new Vector3[4 * numberOfParticles]; trians = new int[6 * numberOfParticles]; particles = new SingleParticle[numberOfParticles]; radius = radius * 1.1f; //ставлю точки полигоны треугольники и т.п. for (int i = 0; i < numberOfParticles; i++) { int index = i * 4; vert[index + 0] = new Vector3(-1f, 0f, -1f); vert[index + 1] = new Vector3(1f, 0f, -1f); vert[index + 2] = new Vector3(-1f, 0f, 1f); vert[index + 3] = new Vector3(1f, 0f, 1f); uv[index + 0] = new Vector2(0f, 0f); uv[index + 1] = new Vector2(1f, 0f); uv[index + 2] = new Vector2(0f, 1f); uv[index + 3] = new Vector2(1f, 1f); normals[index + 0] = new Vector3(0f, 1f, 0f); normals[index + 1] = new Vector3(0f, 1f, 0f); normals[index + 2] = new Vector3(0f, 1f, 0f); normals[index + 3] = new Vector3(0f, 1f, 0f); trians[i * 6 + 0] = index + 0; trians[i * 6 + 1] = index + 2; trians[i * 6 + 2] = index + 1; trians[i * 6 + 3] = index + 1; trians[i * 6 + 4] = index + 2; trians[i * 6 + 5] = index + 3; particles[i] = new SingleParticle(); // распределяю облачка по сфере случайным образом Vector3 position = new Vector3(randGen.Next(-500, 500), randGen.Next(-500, 500), randGen.Next(-500, 500)); position.Normalize(); position = position * radius * randGen.Next(0, 100) * 0.01f; particles[i].position = position; particles[i].velocity = new Vector3(randGen.Next(-100, 100), randGen.Next(-100, 100), randGen.Next(-100, 100)); particles[i].velocity *= particleSpeed; } mesh = GetComponent <MeshFilter>().mesh; mesh.Clear(); mesh.vertices = vert; mesh.uv = uv; mesh.triangles = trians; mesh.normals = normals; mesh.RecalculateBounds(); }
private void Init() { int i; for (i = 0; i < count; i++) { float midRadius = (minRadius + maxRadius) / 2.0f; float minRate = Random.Range(1.0f, midRadius / minRadius); float maxRate = Random.Range(midRadius / maxRadius, 1.0f); float radius = Random.Range(minRadius * minRate, maxRadius * maxRate); float angle = Random.Range(0.0f, 360.0f); points[i] = new SingleParticle(angle, radius); points[i].CalPosition(); particleArray[i].position = new Vector3(points[i].getX(), points[i].getY(), 0f); } myparticleSystem.SetParticles(particleArray, particleArray.Length); }