2019独角兽企业重金招聘Python工程师标准>>>
所谓粒子系统可以想象为一堆粒子由一个点或一个面按照一定的规律进行喷射。
粒子系统大致分为2类:一类为“点喷式”,一类为“面喷式”。可以想象前者由一个点进行喷射,类似于焰火;后者在一个平面上有多个点喷射粒子,类似于雨或雪的产生。
首先粒子系统是由粒子组成,要描述粒子系统就必须先描述单个粒子的组成。对于单个的粒子对象,它的属性我将其分为2种:1为固有属性,2为相对属性。对于世界坐标系中的粒子来说固有属性为绝对的:例如粒子的大小,颜色等等,而相对属性是相对与空间中的坐标系来说,例如粒子的飞行速度,位移,粒子在坐标系中的X,Y,Z坐标等等。
接下来得说说“点喷式”和“面喷式”的区别。对于前者来说,所有的粒子为在一个固定的点发射,所以组成系统的所有粒子的坐标的固定的,而需要随机生成的是喷射瞬间粒子的在X,Y,Z的分速度。对于后者来说可以看做随机生成喷射点喷射相同速度的粒子,所以此时粒子在飞行是的速度是可以知道的,而不知道的是生成该粒子的坐标,所以此时的粒子的相对属性发生了改变不是初速度而是初始坐标。
注意不能认为每个粒子喷射点用一个线程去搞定,这种想法是不正确的。正确的想法是把整个面当作一个喷射点(有点抽象)然后随机生成坐标就可以在不同的坐标喷射粒子。如果按照每个喷射点一个线程那么当喷射点过多时系统会瘫掉的