楼上几位 都没有回答到楼主的问题本质.
楼主问的是落地停止旋转.
我的做法一般是:
1.首先 给旋转 随着时间的推移,给它一个减函数的 递增.
比如 rotation += 5*rand(-2,2)/(time)
主要是模拟受到空气阻力后,旋转上的动能被消耗.
2.除了当speed 小于一个数时,强制让它的velocity =0 这点是必须的 , 但是不够。
因为落地后 你虽然让它的速度为0了, 但是请注意 速度为0,旋转可不为0.
我的做法是在runtime EX里 .
先获取前一帧PP的旋转,然后
后一帧的旋转 = 前一帧的旋转, (what?????哈哈 前一帧的旋转赋值给后一帧,代表旋转无变化,就是不转.
可以写有很多写法啊。、可以写、碰撞之后产生新粒子 继承原来的粒子替代属性
或者 碰撞之后。直接原地不动。就ok了
用 if (event ==1)
else
这么写就好了
碰撞值不知道你说的是什么。但是有一个数值是精度的
创建表达式
particleShape1.index_con = rand(1,11);
float $a =rand(0.4,0.6);
particleShape1.scale_con = <<$a,$a,$a>>;
float $b =rand(0,360);
particleShape1.rotate_con = <<$b,$b,$b>>;
particleShape1.rotate_rand = rand(-10,10);
运行前
float $speed = (mag(particleShape1.velocity)/15);
particleShape1.rotate_rand = $speed*particleShape1.rotate_rand;
运行后
if ((mag(particleShape1.velocity)/20<0.1)&&particleShape1.worldPosition)
{
particleShape1.velocity = 0;
};
只要你粒子替代里面修改了照着这个表达式应该没问题
修改一下数值】