[ shader 应用纹理偏移,纹理为图集时,坐标映射不正确 ]

预期效果:


单图没有问题,动画都没问题。

但是当精灵帧为图集资源的目标纹理时,
坐标映射不正确,发生错位(图集越大,错位越明显)。

我判断错位原因是写效果时,精灵帧使用的是单图纹理, UV1:1
但是使用图集时,目标纹理只是纹理的一部分,
尝试重新计算纹理坐标,但效果不理想,
虽然错位得到较好解决,但仍然会出现图集里其他的纹理,

是否有更为优雅平滑解决方案?

(比方说能不能把目标纹理重新映射为 1:1 ?)


测试 demo
wave.rar (1.2 MB)

相关的问题:
http://www.cocoachina.com/bbs/read.php?tid-1713702.html

该 shader 水面效果参考了下面这个帖子的代码:
http://forum.cocos.com/t/creator-shader/36388

该 shader 多重纹理效果参考了下面这个帖子的代码:
http://forum.cocos.com/t/creator-1-5-2-shader/49588

1赞

我也遇到了这个问题,做uv动画,独立texture的sprite没有问题,图集里面的sprite就不对了,因为图集里的sprite的uv坐标本身就是texture uv的一部分,并且还可能旋转了。需要知道图集中sprite的真实uv坐标以及是否旋转,然后控制偏移后uv的范围还是原本的位置才行。
ps: 我做了个组件,支持图集了,提交到插件库了,等官方审核,免费的

这个效果的shader很赞呀

请问那个插件叫什么,貌似找不到。

这问题有人解决了吗?

我这边是将spriteframe的rect数据传入shader中

怎么实现的,可以具体说下,或者代码贴下吗?谢谢