背景にBlendMode=.subtractのSKSpriteNodeをaddChildし、
さらにBlendMode=.addのSKSpriteNodeをaddChildすると、
端末によって描画結果が異なってしまいます
XcodeにてFile > New > Project からGameを選択
LanguageをSwift
Game Technorogyを Spritekitに選択し、
新しくプロジェクトを作成してから
GameScene.swiftにメソッドを追加
func addRectangleNode(size:CGSize,color:UIColor,blendMode:SKBlendMode?) { let spriteNode = SKSpriteNode( color: color, size: CGSize(width:size.width, height:size.height) ) spriteNode.anchorPoint = CGPoint(x: 0.5, y: 0.5) spriteNode.zPosition = CGFloat(self.children.count + 1) spriteNode.position = CGPoint( x:0.0, y:0.0 ) if blendMode != nil{ spriteNode.blendMode = blendMode! } self.addChild(spriteNode) }
このメソッドでSpriteNodeを作ってaddChildしています。
さらにdidMoveメソッド内でこのメソッドを呼び出しています
override func didMove(to view: SKView) { self.addRectangleNode(size: CGSize(width: self.size.width, height: self.size.height), color: UIColor(red: 1.0, green: 0.5, blue: 0.5, alpha: 1.0),blendMode: nil) self.addRectangleNode(size: CGSize(width: self.size.width/2, height: self.size.height / 2), color: .white,blendMode: .subtract) self.addRectangleNode(size: CGSize(width: self.size.width/4, height: self.size.height / 4), color: .white,blendMode: .add) ~~ ~~ }
大(ピンク)、中(黒、減算)、小(白、加算)の順でSpriteNodeをaddChildしています。
その結果、端末によって描画結果が変わってしまいます。
中が白くなっているのがiPhone6,新型iPad、シミュレータ(iPhoneXR)での描画結果
中が大外と同じ色になっているのがiPhone7,iPhoneXRでの描画結果です。
3つのSpriteNodeをaddChildしているだけなのですが1番上にあるblendMode=.addのノードが
白いものについては自分が思った結果通りだったのですが、
大外と同じ色のものについては2つ目のblendMode=.subtractのノードにのみ影響を与えているように感じます。
できれば中が白くなってほしいのですがどうすればよいのでしょうか
あなたの回答
tips
プレビュー