Я хочу нарисовать пунктирную линию в своей игре с набором спрайтов, я могу использовать узел SKShapeNode, чтобы нарисовать обычную линию, как показано ниже:
UIBezierPath *_path=[UIBezierPath bezierPath];
//1
CGPoint point1 = CGPointMake(100,100);
CGPoint point2 = CGPointMake(150,150);
[_path moveToPoint:point1];
[_path addLineToPoint:point2];
//2
SKShapeNode *line = [SKShapeNode node];
line.path = _path.CGPath;
Я попытался установить штриховой шаблон для UIBezierPath следующим образом:
// adding this code at location 1 or 2 above but no effect
CGFloat dashes[] = {6, 2};
[_path setLineDash:dashes count:2 phase:0];
но пунктирный узор не применяется.
Я также попытался создать пунктирную копию CGPath непосредственно из свойства UIBezierpath.CGPath как:
CGFloat dashes[] = {6, 2};
CGPathRef aCGPath= CGPathCreateCopyByDashingPath(_path.CGPath,NULL,0,dashes,2);
line.path = aCGPath;
но тоже самое.
Я очень ценю, если кто-то может объяснить, в чем проблема и как я могу нарисовать пунктирную линию между двумя точками, применив пунктирную cgpath к skshapenode.
Редактировать: я знаю, что для этого простого примера я мог бы разделить расстояние между этими двумя точками на небольшие фиксированные расстояния и перемещать и рисовать пунктирную линию с помощью безейрпати, но рассмотрим путь свободной руки с точками, полученными в результате касаний, это очень сложно и неэффективно перерисовывать путь с точками фиксированной длины, затем нарисуйте штрихи. Интересно, есть ли способ применить пунктирный шаблон к пути и заставить skshapenode использовать его, это мой вопрос.