查看: 1080|回复: 0
打印 上一主题 下一主题

[经验分享] unity开发经验之用材质贴图模拟流体特效

[复制链接]

5472

主题

6

听众

1万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
76544
精华
23

活跃会员 荣誉管理 突出贡献 优秀版主 论坛元老

跳转到指定楼层
楼主
发表于 2018-11-24 16:57:26 |只看该作者 |倒序浏览
如果我们没有流体插件的时候怎么办,非商业项目不一定要花钱是吧,也不想自己写,所以 ltheonel 就来个调皮的用材质贴图模拟流体特效:

鸣谢作者:ltheonel

前两天做项目时(unity版本5.3),被一个水泥的流体特效难着了,找了好几个插件,调出的效果都不理想,还花费了好多时间。最后解决的方法是调材质贴图,利用材质贴图的帧动画实现。

20160627102448038.png
我使用了240张贴图,实现的动画挺不错的,接下来说下怎么实现:

首先添加一个新版粒子特效,start Speed设置为0,在Render中render Mode设为Mesh,mesh设为Plane(也可以弄成自己的片型形状),接下来就是材质了。

调材质材质shader为默认rendering Mode调为  CutOut  贴图那里为第一张贴图(其实无所谓),然后用代码实现材质贴图的帧动画,我的做法是把所有图片都加载进来然后每隔0.04s改变一帧(我用resources加载),接下来帧动画代码,挺简单的:
20160627102546421.png
  1. cementEffect.mainTexture = centerTextures[num];

  2.         interVal -= Time.deltaTime;

  3.         if (interVal <= 0)

  4.         {

  5.             if (num >= centerTextures.Length - 1)

  6.             {

  7.                 StartCoroutine(WiatForSeconds(1, UIName.UISceneDefault));

  8.                 return;

  9.             }

  10.             num++;

  11.             interVal = 0.04f;

  12.         }
复制代码
ps:cementEffect为材质,centerTextures为存储图片的数组,num开始时为0
ps2:动画实现用InvokeRepeating也行,再在判断里CancleInvoke


如果你也曾经 “调皮” 过,来分享一下~



分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏2 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-25 14:44 , Processed in 0.087842 second(s), 34 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部