31

私は Apple の新しい Sprite Kit を掘り下げていて、しばらくの間それを使用しています。ただし、 の曲線パスを描画しようとすると、問題が発生しましたSKShapeNode。代わりに直線を描いているように見えます。

これは私が抱えている問題の非常に簡単な例です - のCGPathためにa を描くことを試してい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 のバグですか?

4

1 に答える 1