文字の輪郭に沿って移動するSKSpriteNodesを作成したいと思います。私は赤い線をたどるためにスプライトを希望スイフト:閉じたCGPathにポイントを追加するには?
:私は多くの手紙を持っていますが、ここでは一例です。私は主に私の問題をカバーしていることを、この答えを見つけました:私のスプライトが周りの完全なパスを完了していないとして、私はまだ問題に遭遇しかし
let font = UIFont(name: "HelveticaNeue", size: 64)!
var unichars = [UniChar]("P".utf16)
var glyphs = [CGGlyph](count: unichars.count, repeatedValue: 0)
let gotGlyphs = CTFontGetGlyphsForCharacters(font, &unichars, &glyphs, unichars.count)
if gotGlyphs {
let cgpath = CTFontCreatePathForGlyph(font, glyphs[0], nil)!
let path = UIBezierPath(CGPath: cgpath)
print(path)
XCPlaygroundPage.currentPage.captureValue(path, withIdentifier: "glyph \(glyphs[0])")
}
:Get path to trace out a character in an iOS UIFont
答えは、この良いとワーキングサンプルコードが付属していますすべての手紙のための手紙が代わりに「P」は、ここで停止します(と下から開始)で:
私はそうのようpath
にいくつかのポイントを追加してみました:
CGPathAddLineToPoint(path, nil, 0, 0)
が、結果はので、おそらく動作しません。追加ポイントは<Close>
ステートメントの後です。
<UIBezierPath: 0x7889ff70; <MoveTo {25.950001, 55.800003}>,
<LineTo {25.950001, 95.100006}>,
<LineTo {53.850002, 95.100006}>,
<QuadCurveTo {71.625, 90.075005} - {66, 95.100006}>,
<QuadCurveTo {77.25, 75.450005} - {77.25, 85.050003}>,
<QuadCurveTo {71.625, 60.750004} - {77.25, 65.850006}>,
<QuadCurveTo {53.850002, 55.800003} - {66, 55.650002}>,
<Close>,
<MoveTo {11.700001, 107.10001}>,
<LineTo {11.700001, 0}>,
<LineTo {25.950001, 0}>,
<LineTo {25.950001, 43.800003}>,
<LineTo {58.650002, 43.800003}>,
<QuadCurveTo {83.175003, 52.050003} - {74.850006, 43.650002}>,
<QuadCurveTo {91.5, 75.450005} - {91.5, 60.450001}>,
<QuadCurveTo {83.175003, 98.775002} - {91.5, 90.450005}>,
<QuadCurveTo {58.650002, 107.10001} - {74.850006, 107.10001}>,
<Close>,
<LineTo {0, 0}>