平滑路径角以与SKAction followPath一起使用

时间:2013-12-16 16:14:22

标签: ios sprite-kit skaction

我正在研究如何最好地绕CGPathRef转弯,这样当我打电话给SKAction -followPath:asOffset:orientToPath:duration:时,我的僵尸会在角落周围平滑地动画,而不是每次都抓住90度的角落老乡走了一个角落。网上(和SO)似乎有一些关于使用Catmull-Rom样条的解决方案,我熟悉3D动画使用它。

我的问题:有没有人知道添加圆角的简单方法,实现Catmull-Rom似乎有点超出了我的需要。

其次:如果它确实需要Catmull-Rom是多么容易。很难将结果曲线重新变成CGPathRef所以我可以将它输入我的{{ 1}}?

NB:路径是由一个简单的A *实现生成的,该实现存储了许多CGPoint [x,y]航路点,然后我将其用作路径的基础。如果可能的话,我不想使用贝塞尔曲线,因为我希望保持新路径靠近瓷砖中心线以避免可碰撞的物体。当我几乎需要使用初始路径近似时,我也不想开始计算船体的ctrl点。

enter image description here

SKAction

1 个答案:

答案 0 :(得分:1)

CGPath有许多用于生成曲线的工具。你绝对不需要自己实现Catmull-Rom或类似的东西。 (如果CGPath对您不方便,您可以使用更高级UIBezierPath并从中获取CGPathRef。)

对于您的应用程序,最简单的选择可能是CGPathAddArcToPoint。当然,您需要扩展循环以确定何时需要转弯而不是直线。然后,不是在新正方形的中间添加一条线,而是在其边缘添加一条线,然后是(x1, y1)是正方形中间的弧,(x2, y2)是该线应退出的边缘square,from radius是广场宽度的一半。