粒子光环
前半部分参考师兄博客(https://blog.youkuaiyun.com/simba_scorpio/article/details/51251126)
目标效果:
- 两层粒子光环,旋转方向相反
- 粒子大小随机
- 粒子运动在一定半径附近随机运动,运动速度有明显差异
- 点击后内层光环扩张,外层光环收缩,再点击恢复
1. 新建对象
新建空对象myParticle,给myParticle新建两个空对象outer和inter,分别表示内层光环和外层光环。
给outer和inter添加Particle System的组件,不用更改什么属性。下面主要针对outer,即外层光环进行说明。
2. 新建代码
新建particle类,用来实现粒子效果,新建ParticalInfo类用来储存单个粒子的信息。
public class particle : MonoBehaviour{
public class ParticalInfo{
public float radius; //粒子旋转的半径
public float angle; //粒子旋转的角度
public float time; //用于计算ingPong函数的时间
public float size; //粒子大小
public ParticalInfo(float r, float a, float t, float s){
radius = r;
angle = a;
time = t;
size = s;
}
}
particle类的成员变量有两种,公有成员可以在界面上进行调控,私有成员进行内部的逻辑运算。
public int number = 30000; //粒子数量
public float MaxSize = 0.1f; //粒子最大半径
public float MinSize = 0.03f; //粒子最小半径
public float MaxRadius = 12f; //扩展时的最大运动半径
public float MinRadius = 6f; //扩展时的最小运动半径
public float collect_MaxRadius = 4f;//收缩时的最大运动半径
public float collect_MinRadius = 1f;//收缩时的最小运动半径
public bool clockWise = true; //是否顺时针运动
public float speed = 2f; //运动速度
public float pingPong = 0.02f; //浮游偏移量
private ParticleSystem particleSys; //粒子系统
private ParticleSystem.Particle[] particleArr;