unity之粒子碰撞触发方法

需求是用水灭掉火焰。所以水的粒子要与火焰的粒子发生碰撞时执行灭火事件。效果如图:

 

首先从火焰角度思考:

火焰的粒子要监测是否被撞到,所以要给它加上碰撞体。同时勾选collision里面的Send Collision messages,把坐标改成world,collision mode 改成3D。

collider with选项中可以选择和某一类物体发生碰撞,如果选择Everything就是和所有的碰撞体进行碰撞。

 

unity之粒子碰撞触发方法_第1张图片

然后将下面的代码绑定到该粒子的物体上,该代码是来监测碰撞的

  //火焰被碰撞时调用
    void OnParticleCollision(GameObject other)
    {
        Debug.Log("我是" + other.name);

       if (other.tag == "Water")
        {
            Debug.Log("灭火开始");

         }

    }

 

上述代码会在有物体碰到该粒子的碰撞体的时候被调用。 当然碰撞的物体(也就是上面提到的水)也是需要有collider的。这样火焰碰撞就完成了。

 

你可能感兴趣的:(粒子系统)