减速时MotionStreak显示效果问题

现在在做弹幕游戏
子弹添加MotionStreak组件作为拖尾效果,在正常速度下显示是正常的

但在减速模式下(cc.director.getScheduler().setTimeScale(0.1))
显示出现了问题

拖尾会与子弹分离开来,长度缩短。
想请教一下原因为何,如何解决,谢谢

发现是在我将子弹put回pool前调用了reset,如果不调用拖尾显示就是正常的,
但会出现发射点到结束点超长拖尾

MSBug.rar (187.8 KB)
做了demo,有没有人来忙我看一下

@jare @panda

你这个是什么版本的 1.5.还是 1.6?

版本1.5.1

有没有测试一下最新版本的?因为之前有修复 MotionStreak reset 的一个 bug

或者看看这个 PR:

https://github.com/cocos-creator/engine/pull/1727

使用了最新的1.6rc1,依然存在问题

这应该是 action 的 moveTo 的 update 跟 MotionStreak 不同步的原因(moveTo update 2 (你开启多少个 action 的次数)次后才会去执行 1 次 MotionStreak 的 update)

你可以试看看,先别用 Action 的 moveTo,自己在 update 内算一下坐标.

我在bullet内更新位置,依然会有拖尾分离的问题MSBug.rar (193.7 KB)
另外,这个问题是不是bug?

我说的是不用 Action 在组件的 Update 里面计算子弹自身的 X 跟 Y 坐标。

这个问题讨论一下,看看是否有好的办法解决,你先用上面的方式

我上面传的项目确实是在子弹的update里面更新坐标的

依然会有拖尾分离的问题

demo 发给我一下吧,我测试看看

MSBug.rar (193.4 KB)

请问有结果了吗

这个问题不好解决,跟更新机制有关系,已经记录了,有空的时候会尽快修复

MSBug1.rar (193.7 KB)

老铁,来看看我修改后的代码,虽然你在callback中reset了那个motionstreak,但是之后改变位置也是算时间的,靠reset不行,只要发生位移,motionstreak就会生成,按照movestart点到moveend点,所以,整个motion必须在get的时候创建新的,而不是简单的reset

我用的1.4.2在这测没啥问题,你可以看看,有问题咱们再一块研究吧

1赞

大佬修复了吗,2021年了

修复了,请结合这两个 PR 服用


如果是原生,最好同步更新这个 PR

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。