Подтвердить что ты не робот

Sprite Kit - SKShapeNode Путь не рисовать Квадратная кривая

Я вникал в новый 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?

4b9b3361

Ответ 1

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

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