我对这里发生的事感到困惑。我知道它应该是一些坐标移位,但是当我使用圆圈作为路径时,它会完全跟踪它。如果我使用如下曲线,这是我得到的结果。我只想绘制曲线然后有一个精灵能够追踪曲线。有什么想法是错的吗?
// 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];
答案 0 :(得分:0)
不使用数学来混淆你,你看到路径的原因是因为CGPathAddQuadCurveToPoint定义的第三和第四个参数:
CGPathAddQuadCurveToPoint(path, m, cpx, cpy, x, y)
是曲线的控制点,该曲线是为了获得给定参数定义的曲线而进行的数学计算的结果。因此,例如,给定一条曲线从(0,0)开始并以(0,200)结束,控制点位于(100,100),该曲线上的最高点实际上将位于(100,50) 。换句话说,曲线的最顶部将在y轴上向上到控制点的y坐标所在的位置。因此,如果您希望曲线的最高点位于(100,100),那么您的控制点的y坐标将位于200左右。
当控制点偏离曲线中心或者有多个控制点构成曲线时,这会变得更复杂一些。有关曲线/路径的详细工作,请参阅此维基百科页面: