在使用Cocos Creator做曲线动作时,总是有些刻意逃避使用cc.bezierTo(贝塞尔曲线),而是简单使用cc.moveTo、cc.JumpTo来模拟,后来更偷懒直接使用Creator的动画编辑器来生成,如图所示:
动画编辑器生成曲线运动虽然上面的方法也能解决一些问题,但总是舍近求远,有简单的方法面不用,原因是自己没搞明白。
为了能将cc.bezierTo真正利用起来,我结合cc.Graphics组件制作了一个简易的贝塞尔曲线编辑工具,看下图:
image.png图中是两条曲线,在编辑器中直接改变起点、终点、控制点1、控制点2的位置,即可实时显示出曲线路径。
左则DrawBezier组件面板中有一个Params的文本属性,就是cc.bezierTo可使用到的参数,结构如下:
[
[ //曲线一
{"x":-123,"y":214}, //起点
{"x":-418,"y":214}, //控制点1
{"x":-418,"y":42}, //控制点2
{"x":-92,"y":42} //终点
],
[ //曲线二
{"x":-92,"y":42},
{"x":-26,"y":235},
{"x":90,"y":266},
{"x":228,"y":134}
]
]
将这个场景运行起来也可以修改编辑曲线,使用上面生成的参数可以预览到cc.bezierTo动作的效果:
贝塞尔曲线.gif3
下面简单介绍一下相关组件属性,先看一下图中的两个红色起点上的组件
- 不论是起点、终点、控制点,都有一个Dragable组件,负责实现节点的拖动
- 图中的两个红色节为起点,上面挂了一个BezierAction组件,Target属性它的是终点节点,Ctrl1、Ctrl2分别是它的控制点。
再看一下DrawBezier绘图组件属性:
image.png- 在场景中添加一个节点,挂载一个cc.Graphics
- 挂载DrawBezier组件,BezierActions是一个BezierAction组件的数组,将上图中的两个红色节点拖动到此处即可
- ActionNode是用于执行cc.bezierTo的节点,前面图中的金币
- Duration是每条曲线的持续时间,(目前来看该属性放在BezierAction组件上更好)
目前这个贝塞尔曲线编辑工具勉强可用,还有不少需要改进的地方,如果你对此感兴趣可以在公众号中回复“Bezier”
或“贝塞尔”
可以获取该源码,感谢你的关注。
网友评论