1、首先画一条曲线,不要分太多的段,对其进行从建,如下图。作用会在下面讲到。并将曲线改名为 axis 制作一段骨骼,并给骨骼一个线条,将曲线绑定到骨骼上利用骨骼运动带动曲线运动大家可以用簇变形来做,怎么做大家都会吧要将每个蔟子化到梗骨骼上,方便整体运动如图下面,关键时刻到了建立一个粒子发射器简单的进行设置,如图现在给粒子的位置属性设置表达式:float $para=sin(1.57*particleShape1.age/particleShape1.lifespan);float $poi=pointOnCurve -pr $para -p axis;float $rad=0.6+pow(part
2、icleShape1.age/1.5,6);float $ang=particleShape1.age*3+(particleShape1.particleId+rand(0.1,0.3)*0.25;float $x=$rad*sin($ang);float $z=$rad*cos($ang);particleShape1.position=; 然后对梗骨骼的位移进行动画,龙卷风就会跑起来下面,我来对表达式进行解释 float $para=sin(1.57*particleShape1.age/particleShape1.lifespan);这句大家可以发现particleShape1.ag
3、e/particleShape1.lifespan,particleShape1.age 的值是从到 particleShape1.lifespan,而 particleShape1.lifespan 的值始终是,不变,所以particleShape1.age/particleShape1.lifespan的值就是从到,而是弧度值对应的角度值是度所以$para=sin(1.57*particleShape1.age/particleShape1.lifespan)的值就是从到,这是粒子中常用的技巧而第句float $poi=pointOnCurve -pr $para -p axis利用到了$
4、para,我来解释下这句,pointOnCurve 是个获得曲线信息的命令 -pr 是曲线参数命令,后面跟的是个数 ,而$para 的范围正好覆盖了整个曲线,(因为重建曲线时已经标总化,大家可以回头看看) -p 得到的是每个点的空间坐标,是个失量,axis 是曲线名,必须跟在后面然后将得到的每个点的空间位置存在一个数组$poi中记住加单引号,是键下面那个,别搞错了 这样就找到了曲线上每点的空间位置信息float $x=$rad*sin($ang);float $z=$rad*cos($ang);这两句比较好理解,是圆周运动必要的前面的$rad 是半径float $rad=0.6+pow(par
5、ticleShape1.age/1.5,6);用一个函数定义了半径的变化,也就是龙卷风从下到上的半径变化为什么用这么一个函数呢?因为他的曲线符合我的要求,你们也可以用别的函数来定义 a 越大,龙卷风的半径越大,b 越大转弯处离根部越远,越大则转弯越急float $ang=particleShape1.age*3+(particleShape1.particleId+rand(0.1,0.3)*0.25;这句很明显,particleShape1.age*3 是让粒子持续运动,(particleShape1.particleId+rand(0.1,0.3)*0.25;是让每个粒子的初始转角不同,这样才会行成面,不会是线particleShape1.particleId 大家都知道吧,每个粒子的都不同particleShape1.position=; 最后将粒子自身定义的运动与曲线上点的位置叠加就可以了我只是给大家一个思路,大家自己回理解的