2013-09-25 16 views
9

Ich experimentiere mit der Verwendung von SKShapeNodes in einem Spiel, und habe herausgefunden, dass die Antialiased SKShapeNodes sehr verschwommen sind.Ist es möglich, die Unschärfe von Antialiasing SKShapeNodes zu beheben?

Ohne Anti-Aliasing:

image without antialiasing

Mit Anti-Aliasing:

image with antialiasing

Gibt es irgendeine Art und Weise Anti-Aliasing von SKShapeNodes in SpriteKit zu verwenden, um die Treppenabstufungs auf den Leitungen zu reduzieren, aber ohne Linien verschwommen machen wie im zweiten Bild oben?

Antwort

5

Nein - so sieht "Antialiasing" auf einem Formknoten aus. Sie könnten erwarten, etwas mehr wie multisampling zu sehen, aber das ist nicht, was SpriteKit hier tut. Um die glatten, nicht verschwommenen Linien zu erhalten, die Sie suchen, müssen Sie Ihre Formen in ein Bild zeichnen und das dann in einem SKNode anzeigen. Sie können auch filing an enhancement request in der API berücksichtigen.

0

Das ist keine schöne Lösung, aber es funktioniert: Erstellen Sie einen größeren SKShapeNode und skalieren Sie ihn.

Normal:

let shape = SKShapeNode(circleOfRadius: 10) 

Scaled:

let scaleFactor: CGFloat = 2 
let shape = SKShapeNode(circleOfRadius: 10 * scaleFactor) 
shape.xScale = 1/scaleFactor 
shape.yScale = 1/scaleFactor 

Dies macht die weniger verschwommen erscheinen viel render, aber gewarnt werden, kann es frustrierend zu Problemen führen, wenn SKNodes als Kinder geben, weil sie kann rekursiv skaliert werden und am Ende kleiner als erwartet sein.