1. 程式人生 > >unity粒子系統碰撞

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,是無效的。上面的函式並不會被執行。