Example #1
0
    // 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();
    }
Example #2
0
    // 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();
    }
Example #3
0
    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);
    }