スプライト キット ゲームで破線を描画したいのですが、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];
ただし、破線のパターンは適用されません。
また、UIBezierpath.CGPath プロパティから直接 CGPath の破線のコピーを次のように作成しようとしました。
CGFloat dashes[] = {6, 2};
CGPathRef aCGPath= CGPathCreateCopyByDashingPath(_path.CGPath,NULL,0,dashes,2);
line.path = aCGPath;
でも同じです。
誰かが問題の内容と、破線の cgpath を skshapenode に適用して 2 点間に破線を引く方法を説明できれば、本当に感謝しています。
編集: この単純な例では、これらの 2 つのポイント間の距離を小さな固定距離に分割し、bezeirpath によって破線を移動して描画できることはわかっていますが、ポイントがタッチされたフリーハンド パスを考慮してください。再描画は非常に複雑で非効率的です。固定長のポイントを持つパスを作成し、ダッシュを描画します。破線のパターンをパスに適用し、それを skshapenode で使用する方法があるのだろうかと思います。それが私の質問です。