跟随CGMutablePath对齐的SKSprite

时间:2014-01-01 19:30:19

标签: ios sprite-kit cgpath skshapenode

我对这里发生的事感到困惑。我知道它应该是一些坐标移位,但是当我使用圆圈作为路径时,它会完全跟踪它。如果我使用如下曲线,这是我得到的结果。我只想绘制曲线然后有一个精灵能够追踪曲线。有什么想法是错的吗?

//  CGPathRef circle = CGPathCreateWithEllipseInRect(CGRectMake(0,0,400,400), NULL);

CGMutablePathRef circle = CGPathCreateMutable();
CGPathMoveToPoint(circle, NULL, 0, 0);
CGPathAddQuadCurveToPoint(circle, NULL, 200, 200, 265, 20); 

SKAction *followTrack = [SKAction followPath:circle asOffset:NO orientToPath:YES duration:1.0];
 SKAction *forever = [SKAction repeatActionForever:followTrack];
[MySprite runAction:forever];

Actual Particle Path vs SKShapNode

1 个答案:

答案 0 :(得分:0)

不使用数学来混淆你,你看到路径的原因是因为CGPathAddQuadCurveToPoint定义的第三和第四个参数:

CGPathAddQuadCurveToPoint(path, m, cpx, cpy, x, y)

是曲线的控制点,该曲线是为了获得给定参数定义的曲线而进行的数学计算的结果。因此,例如,给定一条曲线从(0,0)开始并以(0,200)结束,控制点位于(100,100),该曲线上的最高点实际上将位于(100,50) 。换句话说,曲线的最顶部将在y轴上向上到控制点的y坐标所在的位置。因此,如果您希望曲线的最高点位于(100,100),那么您的控制点的y坐标将位于200左右。

当控制点偏离曲线中心或者有多个控制点构成曲线时,这会变得更复杂一些。有关曲线/路径的详细工作,请参阅此维基百科页面:

http://en.wikipedia.org/wiki/Bezier_curve