效果:
分析:
要想让第二个发射器产生的粒子向第一个发射器产生的粒子靠齐,我们就需要用到点吸引力或者点排斥力,同时得到第一个发射器粒子的位置就可以了,要想得到第一个发射器粒子位置,那么我们就得需要粒子属性阅读器。粒子属性阅读器获得的东西太多,我们需要读取出来设置给一个变量,变量再传给点吸引力的位置即可。
步骤:
以模版2个hanging particle发射器为模版创建粒子系统。
1、先调整第一个HangingParticulates发射器的参数。
2、发射器属性下设置GPU计算模拟,勾选本地空间,勾选固定边界。
3、在Emitter State下让发射一次。
4、在Particle State模块下取消勾选Kill Particles When Lifetime Has Elapsed,不让粒子消失。
5、删除Spawn Rate,添加Spawn Burst Instantaneous模块, 只出生一个粒子。
6、删掉box出生位置,修改球形位置的半径。调整粒子大小和颜色。
为了看的更清楚,把Scale Sprite Size和Scale Color模块删掉。不让大小和颜色发生变化。
把另一个发射器关掉,效果如下:
7、再调整第二个发射器的参数,删除Box Location。
8、删掉Spawn Rate,添加Spawn Burst Instantaneous, 修改出生数量。
9、也让它只出生一次。
10、修改发射器属性。
11、让粒子不消亡。
12、让粒子更新不产生大小和颜色的变化,删除模块。
13、我们现在想做的事是让第一个发射器发射的粒子吸引第二个发射器发射的粒子,也就是第二个粒子发射器点吸引力的位置是第一个发射器发射的粒子的位置,注意粒子位置是动态变化的,我们需要把发射器的参数传递过去。
我们添加点排斥力模块(点吸引力模块也可以)
14、我们需要修改力的位置,
重点来了,发射器属性中新建“粒子属性阅读器”。
15、我们需要在发射器生成的瞬间就需要这个,把它拖到发射器生成模块下
粒子读取的发射器命名为第一个发射器的名字。
16、我们建一个向量来获取粒子属性阅读器中的粒子position。
17、我们需要新建一个模块,用于处理把粒子阅读器中读取到的粒子位置赋予forceposition。暂存区中模块+号新建,更名为readparticleposition。
18、我们把发射器参数New 粒子属性阅读器拖到映射Get上,
我们通过粒子的ID能够获取好多东西,
这里我们只要获得位置向量赋予我们新建的forceposition就行了。
19、我们要获取的属性Attribute是什么?粒子Position。
20、我们要传给谁呢?我们把forceposition拖到映射集上。
传过去就可以了。
单击应用。
21、把新建的模块Readparticleposition添加到粒子更新模块。
改变模块位置,得放在Point Force模块的上面。
22、修改Point Force的力的大小,并把force origin设置成我们新建的向量forceposition。
运行效果如下: