2015-06-25 17 views
7

1 SKShapeNode'a (bir satır) dayanan SpriteKit ile tasarlanmış bir oyunum var. Böyle bir çizgi yapıyorum:Alternatifleri SKShapeNode

 if let path = createPathToMove() { 
     let shapeNode = SKShapeNode() 
     shapeNode.path = path 
     shapeNode.name = "line" 
     shapeNode.strokeColor = UIColor.blackColor() 
     shapeNode.lineWidth = 20 
     shapeNode.zPosition = 5 
     shapeNode.antialiased = false 
     shapeNode.lineCap = kCGLineCapRound 
     self.world!.addChild(shapeNode) 
    } 

Maalesef bu bir hata ayıklama özelliği (Sprite-kit çizim), o ne yapıyorum için optimize edilmemiştir olarak tasarlanmış ve daha büyük bir sorundur bu yana Satırda yapaylık var (Çizginin genişliği 2'den büyük olduğu için). Bunlar şu şekilde görünür: Bununla http://i.stack.imgur.com/ccQ1s.png

akılda, birisi söz sorunları gidermek bilir sürece kullanarak Sprite-kitin SKShapeNode, benim için bir seçenek olmadığını kesinti yaptık. Ben cocos2d baktım, ancak bu biraz overkill (sadece bir CCDrawNode için tüm lib kullanarak) gibi görünüyor. SKShapeNode (ve hızlı) için herhangi bir açık kaynak/genel uzantı var mı, bu çizim özelliğini geliştiriyor mu? Sabitlenecek en önemli şey, eserlerdir (düğümdeki beyaz noktalar/çizgiler). Halka açık bir şey yoksa, Cocos2d en iyi seçimim mi?

+1

Bir satır kullanmak yerine, gerçek bir kapalı çokgen yapabilir misiniz? Bu, createPathToMove() işlevinizin biraz daha kıllı olduğu anlamına gelebilir, ancak daha sonra strokeColor yerine fillColor kullanabilir ve bu eserleri kullanamazsınız –

cevap

4

Bu yazı biraz eski olmasına rağmen, başkalarının da aynı sorunu yaşadığını düşündüğümde kendim de cevaplayabileceğimi düşündüm.

Temel olarak, satırdaki artefaktları kaldırmak için, çizgi genişliğini 2.0'dan daha küçük bir boyuta getirmek istersiniz (Her ne sebeple olursa olsun, bundan daha küçük hiçbir yapaylık oluşmaz). çizgi genişliği ayarladıktan sonra, şöyle SKNode büyütmek isteyeceksiniz:

node.xScale = 10 
node.yScale = 10 

Bu da hat olduğundan daha belirgin kalın görünmesine neden olur ve hat hiçbir eserler yoktur.

Ayrıca, antialiased özelliğini false olarak ayarlamanız gerekebilir, aksi halde satır çok bulanık görünecektir.

+0

Bunu deneyeceğim, teşekkür ederim! –