0

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

//  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];

实际粒子路径与 SKShapNode

4

1 回答 1

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

于 2014-02-24T07:00:34.613 回答