2016-01-19 3 views
-1

У меня есть эффект отскока до UILabel, но я хочу добавить эффект взрыва, когда он достигнет нижней границы. Кто-нибудь знает, как добавить этот последний эффект.Столкновение Объекты с дымом или пылью IOS

+0

Создайте gif в фотошопе и используйте его в изображении. –

+0

Я попробовал это http://www.raywenderlich.com/6063/uikit-particle-systems-in-ios-5-tutorial, но не работает. Я хочу знать, есть ли в любом случае, чтобы архивировать это, используя swift. Похоже, что объект падает и пыль поднимается из-за столкновения. –

ответ

0

На всякий случай, я решить эту проблему путем создания пользовательского SKScene:

класса MyScene: SKScene {

override init(size: CGSize) { 
    super.init(size: size) 
    self.backgroundColor = SKColor(red: 0.15, green: 0.15, blue: 0.3, alpha: 1) 
    let sklbl: SKLabelNode = SKLabelNode(fontNamed: "Chalkduster") 
    sklbl.text = "hello world !!" 
    sklbl.fontSize = 30 
    sklbl.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)) 
    self.addChild(sklbl) 

    //return self 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

func newExplosion (posX:CGFloat, posY:CGFloat) -> SKEmitterNode { 
    let path = NSBundle.mainBundle().pathForResource("MyParticle", ofType: "sks") 
    let emitter: SKEmitterNode = NSKeyedUnarchiver.unarchiveObjectWithFile(path!) as! SKEmitterNode 

    emitter.position = CGPointMake (posX,posY) 
    emitter.name = "explosion" 
    emitter.targetNode = self.scene 
    emitter.numParticlesToEmit = 1000 
    emitter.zPosition = 2.0 
    return emitter 
} 
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    for (index, t) in touches.enumerate() { 
     let p:CGPoint = t.locationInNode(self) 
     self.addChild(self.newExplosion(p.x, posY: p.y)) 
    } 
} 
override func update(currentTime: NSTimeInterval) { 
    /* S e llama antes de que cada frame es rendered*/ 
} } 

После этого я должен создать SKS файл с эффектом дыма называется MyParticle.sks

Затем на моем контроллере я добавил представление и установил его класс «SKView».

Тогда я связывал эту точку зрения, как

@IBOutlet weak var blurLoading: SKView! 

и добавить этот элемент также:

var amiterlayer: CAEmitterLayer = CAEmitterLayer() 

, наконец, на мероприятии viewload я добавить:

self.blurLoading.showsFPS = true 
    self.blurLoading.showsNodeCount = true 
    let s:MyScene = MyScene (size: self.blurLoading.bounds.size) 
    s.scaleMode = SKSceneScaleMode.AspectFill 
    self.blurLoading.presentScene (s) 

и эффект работы, когда касаясь экрана, если вы хотите вызвать ondemand, просто выполните: self.blurLoading.scene.newExplosion (x, y).

Это работает !!

Смежные вопросы