需求是用水滅掉火焰。所以水的粒子要與火焰的粒子發生碰撞時執行滅火事件。效果如圖:
首先從火焰角度思考:
火焰的粒子要監測是否被撞到,所以要給它加上碰撞體。同時勾選collision裏面的Send Collision messages,把座標改成world,collision mode 改成3D。
collider with選項中可以選擇和某一類物體發生碰撞,如果選擇Everything就是和所有的碰撞體進行碰撞。
然後將下面的代碼綁定到該粒子的物體上,該代碼是來監測碰撞的
//火焰被碰撞時調用
void OnParticleCollision(GameObject other)
{
Debug.Log("我是" + other.name);if (other.tag == "Water")
{
Debug.Log("滅火開始");}
}
上述代碼會在有物體碰到該粒子的碰撞體的時候被調用。 當然碰撞的物體(也就是上面提到的水)也是需要有collider的。這樣火焰碰撞就完成了。