首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之运行时修改粒子特效镜像以及缩放(八十)
2015
05-13

Unity3D研究院之运行时修改粒子特效镜像以及缩放(八十)

刚好这几天有朋友问我,我也刚好整理一下。

1.先说非运行时,AssetStore有一个叫Particle Scaler的插件,非常好用。但是很遗憾它运行时不能用。

2.再说运行时,就是让transform的scale可以控制粒子的缩放,如果设置-1就是粒子镜像。

首先,把unity的shader下载下来。http://unity3d.com/cn/get-unity/download/archive 找到所有Particle开头的shader,也就是粒子特效用的。

下面我随便改一个shader,其他的shader修改方法原理一样。 注:shader 中 ”//—Add—“ 就是我修改的内容

接着给需要缩放或者镜像的粒子挂上这一条脚本。利用OnWillRenderObject方法,将粒子的缩放以及坐标传进shader中去。

OK.这样粒子就完成了镜像。。 编辑器中快改一改transform的scale的值看看效果吧。

Unity3D研究院之运行时修改粒子特效镜像以及缩放(八十) - 雨松MOMO程序研究院 - 1

工程代码:http://pan.baidu.com/s/1i34B7Dj

如果你还有更好的办法来做粒子镜像或者旋转,欢迎在下面留言。谢谢~祝大家学习愉快~

感谢楼下好友的补充。

如果特效层级多,旋转嵌套复杂,如果只用lossyScale是不正确的。
应该保持特效层级中的scale为1,1,1然后修改以上脚本:
GetComponent().material.SetVector(“_Scale”, new Vector3(transform.localScale.x * (transform.lossyScale.x < 0 ? -1.0f : 1.0f), transform.localScale.y * (transform.lossyScale.y < 0 ? -1.0f : 1.0f), transform.localScale.z * (transform.lossyScale.z < 0 ? -1.0f : 1.0f)));

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。