2016-07-22 19 views
0

Ich möchte eine Art Live-Grafik mit Partikeln erstellen, wo ich Partikel abfeuere und die Emitterposition verändere.Erstellen Sie eine spezielle Grafik mit Partikeln?

Das Problem ist, dass ich keinen Weg finden konnte, die Partikel horizontal in einer geraden Linie zu feuern. Sie scheinen etwas Schnee zu haben (Schwerkraft und Spin).

Gibt es eine Möglichkeit, ein Teilchen wie eine Linie von links nach rechts zu zeichnen ??

func createParticles() 
{ 
    let particleEmitter = CAEmitterLayer() 

    particleEmitter.emitterPosition = CGPoint(x: self.center.x, y: 100) 
    particleEmitter.emitterShape = kCAEmitterLayerPoint 
    particleEmitter.emitterSize = CGSize(width: self.frame.size.width, height: 1) 

    let red = makeEmitterCellWithColor(Globals.sharedInstance.palleteRed) 
    let green = makeEmitterCellWithColor(Globals.sharedInstance.palleteRed) 
    let blue = makeEmitterCellWithColor(Globals.sharedInstance.palleteRed) 

    particleEmitter.emitterCells = [red, green, blue] 

    self.layer.addSublayer(particleEmitter) 

} 



func makeEmitterCellWithColor(color: UIColor) -> CAEmitterCell { 
    let cell = CAEmitterCell() 
    cell.birthRate = 1 
    cell.lifetime = 6.0 
    cell.lifetimeRange = 0 
    cell.color = color.CGColor 
    cell.velocity = 100 
    cell.velocityRange = 220 
    cell.emissionLongitude = CGFloat(M_PI) 
    cell.emissionRange = CGFloat(M_PI_4) 
    cell.spin = 0 
    cell.spinRange = 0 
    cell.scaleRange = 0.15 
    cell.scaleSpeed = -0.05 

    cell.contents = UIImage(named: "particle")?.CGImage 
    return cell 
} 

Antwort

0

i auch ähnliches Problem dieses Code Hilfe herauszufordern mir this.I verwinden nur versuchen Emissionsbereich für Schnee-Effekt zu verringern.

 let em : CAEmitterLayer = self.view.layer as! CAEmitterLayer 

     em.renderMode = kCAEmitterLayerOldestFirst 
     em.emitterShape = kCAEmitterLayerLine 
     em.emitterMode = kCAEmitterLayerSurface 
     em.emitterSize = CGSize(width: 10, height: 10) 
     em.beginTime = CACurrentMediaTime() 

     em.emitterPosition = CGPointMake(self.view.frame.width/2, self.view.frame.height/2) 

     let fireCell = CAEmitterCell() 
     fireCell.contents = UIImage(named: "pink.png")!.CGImage 
     fireCell.contentsRect = CGRect(x: 0, y: 0, width: 1.0, height: 1.0) 
     fireCell.birthRate = 5.0 
     fireCell.lifetime = 5 
     fireCell.velocity = 200 
     fireCell.scale = 1 

     fireCell.color = UIColor.blueColor().CGColor 

     // emissions angle stuff 
     fireCell.emissionLongitude = CGFloat(M_PI/2) 
     fireCell.emissionRange = CGFloat(M_PI_2/10.0) 

     em.emitterCells = [fireCell] 
Verwandte Themen