Ich möchte SKSpriteNodes entlang von Buchstabenkonturen verschieben lassen. Ich habe viele Briefe, aber hier ist ein Beispiel:Swift: Wie füge ich Punkte zu einem geschlossenen CGPath hinzu?
Ich würde das Sprite wie die rote Linie zu folgen. Ich fand diese Antwort, die meistens mein Problem behandelt: Get path to trace out a character in an iOS UIFont
Die Antwort kommt mit diesem guten und Arbeitsbeispielcode:
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])")
}
Jedoch habe ich nach wie vor ein Problem wie mein Sprite läuft nicht vollständigen Pfad vervollständigen um der Buchstabe für alle Buchstaben aber stattdessen zB mit „P“ stoppt hier (und begann von unten):
Ich habe versucht, ein paar Punkte auf den path
wie so hinzufügen:
CGPathAddLineToPoint(path, nil, 0, 0)
aber das Ergebnis nicht funktioniert wahrscheinlich, weil der Mehrpunkt ist nach der <Close>
Aussage:
<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}>