我正在研究如何最好地绕CGPathRef
转弯,这样当我打电话给SKAction
-followPath:asOffset:orientToPath:duration:
时,我的僵尸会在角落周围平滑地动画,而不是每次都抓住90度的角落老乡走了一个角落。网上(和SO)似乎有一些关于使用Catmull-Rom样条的解决方案,我熟悉3D动画使用它。
我的问题:有没有人知道添加圆角的简单方法,实现Catmull-Rom似乎有点超出了我的需要。
其次:如果它确实需要Catmull-Rom是多么容易。很难将结果曲线重新变成CGPathRef
所以我可以将它输入我的{{ 1}}?
NB:路径是由一个简单的A *实现生成的,该实现存储了许多CGPoint [x,y]航路点,然后我将其用作路径的基础。如果可能的话,我不想使用贝塞尔曲线,因为我希望保持新路径靠近瓷砖中心线以避免可碰撞的物体。当我几乎需要使用初始路径近似时,我也不想开始计算船体的ctrl点。
SKAction
答案 0 :(得分:1)
CGPath
有许多用于生成曲线的工具。你绝对不需要自己实现Catmull-Rom或类似的东西。 (如果CGPath
对您不方便,您可以使用更高级UIBezierPath
并从中获取CGPathRef
。)
对于您的应用程序,最简单的选择可能是CGPathAddArcToPoint
。当然,您需要扩展循环以确定何时需要转弯而不是直线。然后,不是在新正方形的中间添加一条线,而是在其边缘添加一条线,然后是(x1, y1)
是正方形中间的弧,(x2, y2)
是该线应退出的边缘square,from radius
是广场宽度的一半。