[alayeshi] Unity粒子之灭火功能
本帖最后由 alayeshi 于 2019-12-2 15:19 编辑

好久没在蛮牛写文章记录了,平常很少用到粒子系统。按自己的方法写了一个功能,记录一下。
需求是用水灭掉火焰。所以水的粒子要与火焰的粒子发生碰撞时执行灭火事件。效果如图:



首先从火焰角度思考:

火焰的粒子要监测是否被撞到,所以要给它加上碰撞体。同时勾选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的。这样火焰碰撞就完成了。

挺好看的耶
厉害了楼主
  • 地板 134102
  • 2019-12-24 10:04:26
看了很好,感触很深,我都哭了
6666666666666666666666666
火是一下子没有的 哈哈哈
感谢分享
谢谢分享~~~~~~
厉害了  666666
谢谢楼主分享
谢谢楼主分享
  • 12# l_mzg
  • 2020-2-16 08:51:00
厉害啦,楼主!
666666666666666666
        Beautify!!!!!!!