2014-10-15 6 views
9

मैं अपने खेल जब2 नोड्स को छोड़कर सबकुछ कैसे धुंधला करें। SpriteKit (स्विफ्ट)

self.view?.scene?.paused = true 

की पृष्ठभूमि लेकिन बटन और रुके हुए लेबल धुंधला करने के लिए (दोनों SKSpriteNode के) कलंक नहीं होना चाहिए चाहते हैं। वे सभी अलग-अलग जेड-इंडेक्स मान हैं। दृश्य को रोक दिया जाता है जब बटन नोड दबाया जाता है और फिर बटन दबाए जाने पर फिर से शुरू किया जाता है।

मुझे स्विफ्ट में इसे प्राप्त करने का कोई तरीका नहीं मिल रहा है। मुझे कुछ सुझाव मिले जो SKEffectNode का उपयोग करते हैं?

उत्तर

10

बुनियादी कदम ...

  1. एक SKEffectsNode
  2. बनाएँ CIGaussianBlur CIFilter
  3. प्रभाव नोड
  4. प्रभाव नोड के लिए नोड्स जोड़ें फिल्टर निरुपित बनाएँ (बच्चे नोड्स हो जाएगा धुंधला)

और स्विफ्ट में उदाहरण कोड ...

// Create an effects node with a gaussian blur filter 
let effectsNode = SKEffectNode() 
let filter = CIFilter(name: "CIGaussianBlur") 
// Set the blur amount. Adjust this to achieve the desired effect 
let blurAmount = 10.0 
filter?.setValue(blurAmount, forKey: kCIInputRadiusKey) 

effectsNode.filter = filter 
effectsNode.position = self.view!.center 
effectsNode.blendMode = .alpha 

// Create a sprite 
let texture = SKTexture(imageNamed: "Spaceship") 
let sprite = SKSpriteNode(texture: texture) 

// Add the sprite to the effects node. Nodes added to the effects node 
// will be blurred 
effectsNode.addChild(sprite) 
// Add the effects node to the scene 
self.addChild(effectsNode) 

// Create another sprite 
let sprite2 = SKSpriteNode(texture: texture) 
sprite2.position = self.view!.center 
sprite2.size = CGSize(width:64, height:64); 
sprite2.zPosition = 100 

// Add the sprite to the scene. Nodes added to the scene won't be blurred 
self.addChild(sprite2) 
+0

मैं उन्हें कैसे अनवरोधित करूं? क्या मैं सिर्फ 'प्रभाव नोड' को हटा दूंगा, या क्या मैं अपने सभी बच्चों को हटा दूंगा? –

+0

इसके अलावा, लाइन 'filter.setValue (blurAmount, forKey: kCIInputRadiusKey)' एक त्रुटि को फेंक रहा है ** "असंगत प्रकार 'आईडी' के पैरामीटर पर फ्लोट भेज रहा है ** **। यदि यह बिल्कुल मायने रखता है, तो मैंने इस कोड को उद्देश्य-सी में परिवर्तित कर दिया। –

+0

@ क्रिस्टियनकेराइडर यहां उस कथन का एक ओबीजे-सी संस्करण है: '[फ़िल्टर सेट वैल्यू: [एनएसएनंबर संख्या विथफ्लैट: 10.0] के लिए: केसीआईआईएनपुट रेडियसकी]; '। Sprites को अनब्लॉक करने के लिए, आप या तो उन्हें प्रभाव नोड से हटा सकते हैं और फिर उन्हें दृश्य में जोड़ सकते हैं या 'effectsNode.filter = nil;' – 0x141E

संबंधित मुद्दे