作业要求
参考http://i-remember.fr/en 这类网站,使用粒子流编程控制制作一些效果, 如“粒子光环”
这个网站打不开,参考了一下师兄们的博客的图片:

我看了一下,我感觉和上课做的粒子海洋有一些相似,就是需要变成一个环形。
制作流程
粒子光环制作
- 添加一个空对象,并且添加部件ParticleSystem,然后简单设置一下属性:

再设置一下Render的属性中的材料。
粒子光环的属性
创建一个脚本ParticleCircle
public ParticleSystem myparticleSystem; //粒子系统
private ParticleSystem.Particle[] particleArray;
private SingleParticle[] points;
public Gradient grad;
int count = 1000;
public float size = 0.5f;
public float minRadius = 3.0f;
public float maxRadius = 6.0f;
public float speed = 0.5f; // 速度参数
- ParticleSystem.Particle[] particleArray
粒子数组,保存了每一个粒子的状态,同时规定一个数量count,也就是数组的大小。
- SingleParticle[] points
记录了每个粒子对于整个光环的状态,两个最重要的属性角度与半径,因为每个粒子都是绕中心点运动,所以运动轨迹会有一个半径,运动到什么地方就需要角度来记录。这里用到自己定义的一个类SingleParticle。
- Gradient grad
颜色渐变器
- 粒子大小,光环内径外径,转圈速度,旋转方向等。
粒子的位置属性
定义的一个类SingleParticle:通过角度和半径来估算粒子所在的xy平面的面积,xy坐标就是通过三角函数来计算出来。
public class SingleParticle {
public float angle;
public float radius;
private float x = 0.0f;
private float y = 0.0f;
public void CalPosition() {
float temp = angle / 180.0f * Mathf.PI;
y = radius * Mathf.Sin(temp);
x = radius * Mathf.Cos(temp);
}
public SingleParticle(float angle, float radius) {
this.angle = angle;
this.radius = radius;
}
public


3847

被折叠的 条评论
为什么被折叠?



