【问题标题】:SKSprite following CGMutablePath alignmentSKSprite 遵循 CGMutablePath 对齐方式
【发布时间】:2014-01-01 19:30:19
【问题描述】:

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

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

【问题讨论】:

  • 你试过 asOffset:YES 吗?

标签: ios sprite-kit cgpath skshapenode


【解决方案1】:

不用Maths来迷惑你,你看到的路径的原因是因为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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2012-06-10
    • 2012-08-24
    相关资源
    最近更新 更多