Sprite Kit - SKShapeNode 路径未绘制四边形曲线

2024-03-31

我一直在研究苹果新的 Sprite Kit,并且已经使用它有一段时间了。 然而,当我尝试绘制曲线路径时遇到了问题SKShapeNode。它看起来只是画一条直线。

这是我遇到的问题的一个非常简单的例子 - 尝试绘制一个CGPath for an SKShapeNode:

    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, 0, 0);
    CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0);
    CGPathAddLineToPoint(path, NULL, 50, -100);
    CGPathCloseSubpath(path);

    SKShapeNode *shape = [[SKShapeNode alloc]init];
    shape.path = path;

    [self addChild:shape];

    CGPathRelease(path);

这是我的 ASCII 艺术图(抱歉,我还没有足够的声誉来发布实际图像):

---------------------------------------------------------------------------------
|          EXPECTED RESULT              |            ACTUAL RESULT              |
---------------------------------------------------------------------------------
|                                       |                                       |
|             __----__                  |                                       |
|            /        \  <- Curve       |                ?                      |
|           /          \                |           ____________                |
|           \          /                |           \          /                |
|            \        /                 |            \        /                 |
|             \      /                  |             \      /                  |
|              \    /                   |              \    /                   |
|               \  /                    |               \  /                    |
|                \/                     |                \/                     |
---------------------------------------------------------------------------------

正如您所看到的,这行代码并没有绘制出我想要的曲线:

CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0);

我尝试过使用CGPathAddArcToPoint(...),它有效,并且在这个例子中是一个很好的替代品。但是,对于我的实际需求,我需要能够绘制四边形曲线。

CGPath 似乎正确地绘制了所有内容,除了CGPathAddQuadCurveToPoint(...)并且,CGPathAddCurveToPoint(...)- 他们只是在点之间画一条直线。

有谁知道问题是什么?或者这是 Sprite Kit 的一个错误?


“y”应该是曲线的高度,尝试给它一个非零值。 通过给出坐标,它无法知道曲线应该有多陡。所以这就是高度

CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 30);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sprite Kit - SKShapeNode 路径未绘制四边形曲线 的相关文章

随机推荐