コード例 #1
0
        void SliceEvent(Slice2D slice)
        {
            Slicer2DParticlesManager.Instantiate();

            foreach (List <Vector2D> pointList in slice.slices)
            {
                foreach (Pair2D p in Pair2D.GetList(pointList))
                {
                    Vector3 startPosition = new Vector3((float)p.A.x, (float)p.A.y, posZ);

                    Emit(startPosition);
                    Emit(startPosition);

                    Vector3 pos = p.A.ToVector2();
                    pos.z = posZ;
                    while (Vector2.Distance(pos, p.B.ToVector2()) > 0.5f)
                    {
                        pos = Vector2.MoveTowards(pos, p.B.ToVector2(), 0.35f);

                        Emit(pos);

                        //Particle2D particle = Particle2D.Create(Random.Range(0, 360), pos);
                        // Slicer2DParticlesManager.particlesList.Add(particle);
                    }
                }
            }
        }
コード例 #2
0
        static public void Instantiate()
        {
            if (instance != null)
            {
                return;
            }

            GameObject manager = new GameObject();

            manager.name = "Slicer2D Particles";

            instance = manager.AddComponent <Slicer2DParticlesManager>();
        }
コード例 #3
0
        void Start()
        {
            if (instance == null)
            {
                instance = this;
            }
            else if (instance != this)
            {
                Debug.LogWarning("Slicer2D: Multiple Particle Managers Detected!");

                Destroy(this);
            }
        }
コード例 #4
0
        void Emit(Vector3 startPosition)
        {
            startPosition.z = -5;
            Slicer2DParticlesManager manager        = Slicer2DParticlesManager.instance;
            ParticleSystem           particleSystem = manager.GetParticleSystem();

            ParticleSystem.EmitParams emitParams = new ParticleSystem.EmitParams();
            emitParams.startColor    = Color.white;
            emitParams.startSize     = 4;
            emitParams.position      = startPosition;
            emitParams.startLifetime = 2;

            float direction = Random.Range(0, 360) * Mathf.Deg2Rad;
            float speed     = 2;

            emitParams.rotation = direction * Mathf.Rad2Deg;
            emitParams.velocity = new Vector2(Mathf.Cos(direction) * speed, Mathf.Sin(direction) * speed);
            //emitParams.startLifetime = particle.timer;

            particleSystem.Emit(emitParams, 1);
            particleSystem.Play();
        }
コード例 #5
0
        void SliceEvent(Slice2D slice)
        {
            Slicer2DParticlesManager.Instantiate();

            foreach (List <Vector2D> pointList in slice.slices)
            {
                foreach (Pair2D p in Pair2D.GetList(pointList))
                {
                    Particle2D firstParticle = Particle2D.Create(Random.Range(0, 360), new Vector3((float)p.A.x, (float)p.A.y, posZ));
                    Slicer2DParticlesManager.particlesList.Add(firstParticle);

                    Particle2D lastParticle = Particle2D.Create(Random.Range(0, 360), new Vector3((float)p.B.x, (float)p.B.y, posZ));
                    Slicer2DParticlesManager.particlesList.Add(lastParticle);

                    Vector2 pos = p.A.ToVector2();
                    while (Vector2.Distance(pos, p.B.ToVector2()) > 0.5f)
                    {
                        pos = Vector2.MoveTowards(pos, p.B.ToVector2(), 0.35f);
                        Particle2D particle = Particle2D.Create(Random.Range(0, 360), new Vector3(pos.x, pos.y, posZ));
                        Slicer2DParticlesManager.particlesList.Add(particle);
                    }
                }
            }
        }