unity粒子系统碰撞

粒子系统中有一项是collision,与粒子系统之外的产生碰撞mode选择world,其他参数含义如下

(Dampen):抑制(0~1),选这个为1时(完全抑制),碰撞之后,阻止了粒子,可以使碰撞的粒子消失

(Bounce):反弹(0~2),选完这个之后,可以让产生碰撞的粒子以某个角度反弹出去

(Lifetime Loss):生命周期损失(0~1),碰撞之后让粒子损失百分比的生命周期,为1时(生命周期完全损失),可以使粒子消失

(Min Kill Speed):最小清除速度,设置值越大,粒子发生碰撞之后被移除的速度越快,当达到某个值之后,可以近似碰撞之后立即消失

(Collides With):可碰撞范围,设置可以与该粒子系统碰撞的层

(Collision Quality):碰撞质量,设置发生碰撞的碰撞概率大小,选项三项从上到下由高到低,越低碰撞到的概率就越低

(Send Collision Messages):发送碰撞信息,与下面这个方法有关

void OnParticleCollision(GameObject other) 
{
    if(other.transform.CompareTo("water"))
    {
        m_life--;
     }

}

而这个函数要放在被碰撞的物体上。

因此,我要实现灭火器来灭火,火是一个粒子系统,灭火器上的水(或烟)也是一个粒子系统,当灭火器的水与火碰撞时,火的生命值降低,所以在火的脚本添加这个函数

而 在水的粒子系统之勾选Collision,并设置相关参数,在火上添加碰撞体。若火上不添加碰撞体,只是勾选了粒子系统里的Collison,是无效的。上面的函数并不会被执行。


你可能感兴趣的:(unity,unity)