一个奇怪的runAction

一个节点需要按照一个曲线进行运动,我把曲线上的点部分点的坐标获取到,想让该节点按照获取到的曲线节点坐标依次移动。但是在实际的时候,移动节点的实际移动路径不符合预期;
相关代码如下:
for(let i=0;i< self.poses.length;i++){
let act = cc.moveTo(0.01,self.poses[i]);
actes.push(act);
}
self.BezierNode.runAction(cc.sequence(actes));
actes是一个moveTo()动作的数组,
但是问题来了,实际移动的时候移动节点的实际移动轨迹貌似少了前一部分,而且还有很鬼畜的抖动。。。。。
这个有什么好办法能让节点进行曲线运动嘛?感觉使用bezierCurveTo()不好操控路径

所有绘制最后还是会回到桢更新,0.01这个可能数字太小,同一帧达到时也许由多个action执行到;每一帧执行一次移动应该正常吧

嗯,是的,抖动是这个原因,是我在调用的时候使用了计时器,取消计时器就好了。但是从实际来看还是丢失了前一半的路线

我想明白了,不是丢失了前一半的路线,路线就是正确的,这个前一半的路线是(0,0)点到曲线路径起点的线,所以曲线部分是没问题的。。。。
又是一次沙雕的经历

大佬能不能说一下怎样获取曲线上的点:smiley:

不好意思,今天才看到你的回复。
我是这么做的:直接使用贝塞尔曲线的方程计算出来的,将每个点的坐标直接存起来,在移动的时候直接用。
主要代码:


这样做计算量还是挺大的,而且在曲线长度较大的时候能明显感觉到锯齿,我没想出其他好办法,还希望论坛大佬指教

谢谢楼主,这是根据你的思路实现的:grin:

大佬,这个实现能分享一下吗

:grin:能帮到你就很棒了