Набор спрайтов - SKShapeNode Path не рисует четырехугольную кривую

Я углубился в новый Apple Sprite Kit, и уже некоторое время использую его. Однако я столкнулся с проблемой при попытке нарисовать изогнутый путь для SKShapeNode, Просто кажется, что вместо этого нарисована прямая линия.

Вот очень простой пример проблемы, с которой я столкнулся - эксперимент с рисованием CGPath для 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?

1 ответ

Это "у" должно быть высота вашей кривой, попробуйте дать ему ненулевое значение. Давая координату, он не может знать, насколько крутой должна быть кривая. Так что это высота

CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 30);
Другие вопросы по тегам