实现目标
实现一个简单的粒子效果
实现过程
-
首先创建一个空的对象,然后添加一个Particle System
-
编写控制粒子运动的脚本
在Start函数中对需要用到的参数进行初始化particleArray = new ParticleSystem.Particle[count]; particle = new Curve[count]; particleSystem.maxParticles = count; particleSystem.Emit(count); particleSystem.GetParticles(particleArray);
然后在Update函数中对每个粒子的路径进行设置
float theta = begintheta; for(int i = 0; i < count; i++) { particle[i].angle -= speed; particle[i].draw_3d(theta); theta += 0.5f; theta %= 360f; particleArray[i].position = new Vector3(particle[i].getX(), particle[i].getY(), 0.0f); }
这里的粒子的路径单独使用一个类来进行的控制
运动轨迹是一个旋转的玫瑰曲线,所以对每个点首先需要求出下一个时刻其在玫瑰曲线上的位置,然后再旋转一定角度public void draw_3d(float changeangle) { float tempangle = changeangle / 180f * Mathf.PI; float the = angle / 180f * Mathf.PI; float p = 5f * Mathf.Sin(2f * the); x = p * Mathf.Cos(the - tempangle); y = p * Mathf.Sin(the - tempangle); }
至此对粒子的控制就已经完成了,然后可以对粒子的图案进行添加,我使用的是老师提供的一个星型图案
最终运行效果
(图片有点糊,所以看上去效果不是很好)
项目地址