【包教包会】对CocosCreator拖尾组件MotionStreak做了全面优化

image
我贴的好像是“+=”吧 :upside_down_face:
native差不多,你自己试一下

卧槽,没注意符号,原来是+=,我擦,可以了,tks

这个能合批的关键点是啥?想转成3.x,无奈没看懂

fitUV函数

求解为什么改了这个就能合批?

1、小图A、B、C打包成Atlas图集,会生成一张大图D,以及一个配置表E
2、每次需要画A的时候,实际上都是画D,只不过画的是D中的一部分
3、怎么知道画D中哪一部分呢?通过要画的小图的name,去查配置表E,获取到小图在D中的UV坐标、宽高、是否旋转
4、根据查到的内容,把D中对应的部分画在指定位置。
fitUV的作用就是实现3和4
画B、C也是同理,实际画的都是大图D,因此对gpu来说,你自始至终都一直在画D(只是每次画D中的不同部位),没有反复切换要渲染的图,效率就很高,这就叫合批

3赞

感谢。还有一个问题,为什么这个改动能解决原版拖尾不能合批的问题? 是因为原版没有将拖尾的图放在D里吗?还是说因为原版不支持去D中找子图来画拖尾?

原版只支持单张图片啊
image

噢!感谢。那有没有可能使用引擎的运行时动态合图的合图?静态合图只适用部分资源的场景,如果有很多资源要拖尾,静态合图制作起来不够自动化

我没用过动态合图,你自己试一下吧

你好,有类似的3d相关的帖子吗?

我这没有,你再找找吧,或者根据思路自己改一版

你好,我在使用的时候发现个比较尴尬的问题。(诶,验证了一上午。。。)
因为我是准备做子弹的拖尾,子弹本身是会有一些形状,所以要根据速度方向去频繁修改结点的旋转角度angle
你这个控件一旦绑定的结点设置了angle,表现上就完全不对不对了。
请问一下,这边有没有什么建议或者有考虑过更新这个控件?

目前的做法只说是用这个控件的结点把我的子节点包一下了,让旋转只作用于子节点,目前来看可以解决这个问题,但毕竟有一扭扭的反直觉,不知道作者老哥有没有更好的建议(说实话,比较优雅的做法应该是需要你的控件无视掉结点的角度,但这个估计要定制着色器了)

另外,我看了一下,貌似设置scale也会影响拖尾效果。。。

mark下

mark!!

你要实现拖尾不跟随节点旋转和缩放,可以给节点外面套一个父节点,把拖尾加到父节点上,就不受节点旋转和缩放影响了。
或者你把矩阵变换的代码注释掉也行,当时写这段是为了通用。

mark.

如果从缓存池里面拿出来的,拖尾会出现从上一个点出现到当前的点,请问怎么处理