オーバレイシーンにSKEffectsNode
を追加すると、この効果が得られます。
少し難解ですが、やっているように読み込むだけでは十分ではありません。
このメソッドは、バックグラウンドが静的である場合にのみ機能します。基本的には、背景をスクリーンショットし、それをぼやけさせるためにSKEffectNode
にロードすることです。
SceneKitエディタで、シーンにノードを追加し(このノードが他のノードの子ではないことを確認してください)、このノードのクラスを名前がSKEffectNode
に設定していることを確認したら、EffectNode 。これは、設計時にできるだけ少なくなるべくzPosition
でなければなりません。 、そして、
if let effectNode = colorPanelScene.childNodeWithName("EffectNode") as? SKEffectNode {
let blur = CIFilter(name:"CIGaussianBlur",withInputParameters: ["inputRadius": 10.0]);
effectNode.filter = blur;
effectNode.shouldRasterize = true;
effectNode.shouldEnableEffects = true;
UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0)
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let node = SKSpriteNode(texture:SKTexture(image: image));
effectNode.addChild(node);
}
SKEffectNode
の上に別のSKNode
を追加し、それはSKEffectNode
の子ではないことを確認してください:
は、その後のコードでは、次の操作を行いたいです。オーバーレイ要素をすべてSKNode
にスローします。
"let node = SKSpriteNode(imageNamed:image);" xCodeは言った: "型の値を変換することはできません 'UIImage!'期待される引数型 'String'に " –
固定しました。テクスチャを作るのを忘れました – Knight0fDragon