导航移动和贝塞尔曲线

灵感来源于:https://forum.cocos.org/t/creator-3d-unity-creator3d-3d/85621,感谢分享。
修改后只需要一个ts文件放到任意精灵下,即可实现通过精灵的animation动画导航寻路。
image
image
image
image

总结:1,原方法内存中只存在一份路径,但使用起来稍复杂。
2,改成一个组件后,拖拽或动态添加到一个精灵上,调用initNavagent传入路径点和速度即可开始移动,修改isMoving随时可暂停和继续。
3,虽然多个精灵会存在多个路径,计算量增加,但是可以在游戏中显示出每个精灵不同的路径,移动完成后路径绿点消失。

贝塞尔曲线(如下是二阶):
image
简而言之就是ABC三个点在各自的线段上以相同的比例移动,
P0A / P0P1 = AC / AB = P1B / P1P2
C点从A移动到B的过程中形成的一组点,连接起来,就是一个由P0到P2,P1为拉扯点的一条平滑曲线,上面的等式转换后,我们平时直接用下面的公式就可以通过起点P0,终点P2,拉扯点P1,得到一组曲线点C。
image

15赞

mark。

mark!!!

。。。。。mark

大佬能分享下demo吗

ComNavagent.rar (2.1 KB)
看下组件文件吧,拖到节点上就行,编辑节点的position移动动画路径,自动生成平滑的贝塞尔曲线路径。调用initNavagent开始移动,image

移动过程中的加速减速效果image

雷总流弊.


大佬,请问下你的动画是加上了什么属性的,我这里试了下加了坐标属性弄得动画,那curveData里面的数据对象属性都对不上你脚本上面的

image
image
节点下面新建road路径,这样设计的好处在于,可以同时有多个路径,代码控制走哪条路。所以没有弄成父节点设置动画去找动画位置信息。代码是去找你节点路径下面的动画,你像这样再试试,编辑road_1的移动动画

谢谢!我去试试

优秀优秀…

mark!!


大佬,key_frame.motionPath 值为空呢?2.4.3版本

看下是不是这里没弄对,版本我是2.4.4,不是老版本。


demoList.zip (910.6 KB)
还是不行,大佬帮忙看下

4ca58-5wktr demoList.rar (787.0 KB)

厉害哟厉害哟

感谢大佬指点,之前不能成功的原因是这里没有设

调用时间上,写在onLoad里的话,好像动画位置数据不能获取到,就是编辑的位置信息。试了一下按钮的方式,就可以了。你可以自己试试。