匀速贝塞尔曲线路径规划工具
在做游戏开发的时候经常会用到贝塞尔曲线来规划路径,并且在网上也没找到合适的demo,要么就是不支持高阶贝塞尔,要么就是不能匀速运动。所以决定趁着闲余时间自己写一个工具,方便以后用。并且我已经把源码放在GitHub上了,有兴趣的可以看看,希望能帮到有所需要的朋友。在线演示地址(可以直接在上面规划好后导出json文件)下面来简单演示一下该工程:初期功能比较简单,暂时只支持二阶贝塞尔,支持匀...
在做游戏开发的时候经常会用到贝塞尔曲线来规划路径,在网上也没找到合适的demo,要么就是不支持高阶贝塞尔,要么就是不能匀速运动。所以决定趁着闲余时间自己写一个工具,方便以后用。
于是就有了该项目,并且我已经把源码放在GitHub上了,有兴趣的可以看看,希望能帮到有所需要的朋友。
更新日志:
2020.2.7:
- 新添加三阶贝塞尔曲线
- 平滑度自定义
该工程基于cocos creator 2.2.2版本的!
在线演示地址(可以直接在上面规划好后导出json文件)
下面来简单演示一下该工程:
目前支持二阶和三阶贝塞尔曲线绘制、匀速运动、导出路径的JSON数据,
在项目中可以直接读取json文件,里面存储了许多连续的曲线点,直接拿来用即可。
可以根据不同的需求来达到想要的效果。
匀速运动实现思路很简单,其实就是利用了微积分思想,把曲线分割成许多份,每一份此时就可以看作直线运动了!
需要注意的是,该项目分辨率是1920*1080的,在不同的项目中使用可能需要转换下坐标!
导出的json数据格式如下:
{
"time": 2, //路径运行总时长
"length": 1718.4689669565246, //路径长度
"points": [ //曲线点集合
{
"x": 588.1929046563193, //x 坐标
"y": 375.9645232815965, //y 坐标
"length": 0, //上一点到该点的距离,由于该点是起点,所以为0
"time": 0 //上一点到该点需要的时间,由于该点是起点,所以为0
},
{
"x": 595.209865415573,
"y": 362.11259538476247,
"length": 15.527834515990738,
"time": 0.018071707798705424
},
{
"x": 601.8241340965079,
"y": 348.46733368343007,
"length": 15.163829235435424,
"time": 0.01764806874841756
},
{
"x": 608.0357106991243,
"y": 335.02873817759905,
"length": 14.804713204230342,
"time": 0.017230119936876214
},
{
"x": 613.8445952234222,
"y": 321.7968088672695,
"length": 14.450850933083036,
"time": 0.016818285591361077
},
{
"x": 619.2507876694015,
"y": 308.7715457524413,
"length": 14.102637908330035,
"time": 0.0164130259894147
},
...
如果你们有什么好的建议,或者发现了bug可以留言告诉我,我会尽力去完善它。(毕竟是我的第一个开源项目,我还是会好好维护的,23333)
如果觉得好用的朋友希望能点个赞,关注一下哟,你们的每一个star都是对我最大的鼓励和动力!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)