CoreAnimation 파티클을 Swift3에서 사용해 보았습니다.

UIKit 기반 앱에 파티클을 올리고 싶어 CoreAnimation의 파티클을 사용해 보았습니다.


(파라미터를 바꾸면 폭발이나 비 등 다양한 연출을 할 수 있다)

참고로 한 사이트는 모두 Objective-C이었으므로, xcode8상에서 swift3로 고쳤습니다.

SpriteKit의 view를 ViewController에 올리는 방법도 있는 것 같아서 시도해 보았습니다만, 파티클 파일을 만들어, SKScene 파일을 만들어, 그것을 ViewController에 연결해...등 수고가 많이 귀찮았습니다. (게임 연출을 많이 사용한다면 번거롭게 하는 의미는 있다고 생각하지만)
【참고 링크】 SpriteKit과 UIKit을 결합하여 조금 풍부한 연습 화면을 만들고 싶습니다.

SpriteKit을 싣는 것은 조금 번거로운 것이 판명되었으므로, CoreAnimation의 파티클을 시험해 보았습니다 (CoreAnimation 처음 만졌습니다).
【참고로 한 것은 이쪽】 UIKit에서 파티클 효과 표시

매우 간단했습니다 (Obj-C도 Swift도 익숙하지 않으므로 변환하는 데 힘들었습니다).
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // viewControllerの背景を黒くして(背景白だと見づらいので)、
        view.backgroundColor = UIColor.black


        // CAEmitterLayer(パーティクルを載せるレイヤー)を作って、
        let layer = CAEmitterLayer()
        let size = view.bounds.size
        layer.emitterPosition = CGPoint(x: size.width/2, y: size.height/2)
        layer.renderMode = kCAEmitterLayerAdditive

        // ViewControllerに載せて、
        view.layer.addSublayer(layer)


        // CAEmitterCell(パーティクル本体)を作って、
        let cell = CAEmitterCell()
        cell.contents = #imageLiteral(resourceName: "particle1").cgImage
        cell.emissionLongitude = CGFloat(M_PI)*2
        cell.emissionRange = CGFloat(M_PI)*2
        cell.birthRate = 800
        cell.lifetimeRange = 1.2
        cell.velocity = 240
        cell.color = UIColor(red: 0.89, green: 0.56, blue: 0.36, alpha: 0.5).cgColor

        // CAEmitterLayerに載せる
        layer.emitterCells = [cell]

    }
}

그러나 문제가 하나. 파티클은 파라미터 조정을 하고 원하는 연출의 이미지에 도달할 때까지 힘들다. 이것을 파라미터 고쳐 빌드하고 반복해서 있으면 참을 수 없다. SpriteKit이라면 xcode에서 빌드하지 않고 조정할 수 있지만 CoreAnimation에서는 할 수없는 것 같습니다 ....

라고 생각해 모야 모야 하고 있었습니다만, 조사해 보면 이런 Mac 어플리가 있는 것 같네요.
Particle Playground


약 1000엔. 아직 사서 시험하지 않아도 어디가 있으면 편하게 만들 수 있을 것 같습니다.

좋은 웹페이지 즐겨찾기