查看原文
其他

程序丨如何在移动端游戏中实现下雪系统?

日音 腾讯GWB游戏无界 2022-08-30

先上最终效果:



做完下雨做下雪,(点此回顾下雨系统的实现)下雪其实和下雨有很多类似的地方。类似的部分我就不再仔细说明,主要还是看不同的部分。个人认为下雪比下雨更加困难。


首先还是从雪粒子开始,雪粒子无法像雨一样根据深度来直接判断阻挡,因为雨是垂直下落的,但雪不是,雪是会有各种方向的,所以这里需要做实实在在的碰撞来处理遮挡。



就是用了一个触发器,就可以看到雪被挡住了。因为自带的物理引擎性能也很好,这样做还可以接受。



然后要开始处理积雪。第一步还是要实现一个雪的材质,起码要看上去像雪。

基本原理就是雪是白色的,然后加上一个法线,模拟雪表面的纹理。



这样就有了基本的感觉。



然后是处理雪的逐渐覆盖,首先想到的就是利用柏林噪声生成fbm,来逐步覆盖雪地。




可以看到地面和球体都有部分被雪覆盖的痕迹。 接下来依然要处理遮挡部分,和下雨是一样的。



最后是运动痕迹,和以前的草思路一样(点此回顾草的实现方法)。





然后说下这个雪的问题。


顶点片段着色器并不复杂,而且可以适当减少噪声计算来获得好的帧率。问题大的反而是为了处理雪的碰撞,以及雪的速度较慢,会积累大量的粒子在屏幕里。

所以改良措施就是直接用雪粒子特效代替,因为粒子特效是多线程优化过的,也支持碰撞,性能会好不少。

其他应该和下雨类似,需要自己整合到项目中。

最后是插件地址:
https://assetstore.unity.com/packages/vfx/shaders/mobilesnowsystem-135279


投稿请联系:微信 GAD013 / QQ 2074412784


今日推荐  

·如何在Unity实现从纹理中生成法线贴图?

·这里有一份Roguelike游戏制作指南,请查收!

·电子竞技、策略战棋、沙盒创造……2019年本土游戏趋势分析

↓↓↓点击阅读原文,了解更多。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存