要求
这次作业主要是学习粒子系统的使用,在 http://i-remember.fr/en 网站上,可以看到一个很酷炫的白色粒子光带,效果如下:

当鼠标hover到图一中间的+号圆圈中间时,光环会收缩成图二的状态,具体效果可自行前往网站体验~
我们需要模仿这个效果并尝试用粒子流编程控制来实现。
实现
光环在收缩前较为分散,位于光环中间的部分粒子较周围密集,因此我想用一个正太分布来模拟粒子在光环半径范围内的分布状况。这里我采用了Box-Muller 算法来到服从正态分布的随机数,基本思想是先得到服从均匀分布的随机数再将服从均匀分布的随机数转变为服从正态分布。关于Box-Muller 算法可参考百度百科
class Ndistribution{
System.Random rand = new System.Random();
public double getNormalDistribution(double mean, double stdDev)
{
double u1 = 1.0 - rand.NextDouble(); //uniform(0,1] random doubles
double u2 = 1.0 - rand.NextDouble();
double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) *
Math.Sin(2.0 * Math.PI * u2); //random normal(0,1)
double randNormal = mean + stdDev * randStdNormal; //random normal(mean,stdDev^2)
return randNormal;
}
} <

该博客介绍如何使用Unity3D的粒子系统来创建类似http://i-remember.fr/en网站上的光环收缩效果。通过Box-Muller算法生成服从正态分布的随机数来控制粒子分布,使用脚本控制粒子生成、位置变化和旋转。当鼠标悬停在中间时,光环收缩,采用光线射击检测和Box Collider实现交互。文章提供了参数设定和最终效果的演示视频链接,源码可在GitHub获取。

4611

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



