SpriteKit과 UIKit을 결합하여 사용하는 간단한 샘플

개요



iOS 앱에서 풍부한 애니메이션을 실현하기 위해 SpriteKit을 이용했을 때의 메모와 샘플 코드.

하고 싶었던 일


  • 「반짝반짝」한 것을 표현하고 싶다
  • 구현 된 UI와 함께 사용하고 싶습니다
  • 가능한 한 적은 코드로 구현하고 싶습니다
  • 가능한 설정 값을 쉽게 조정하고 싶습니다

  • 이미지



    샘플 코드를 움직인 것.
    ※이것은 Gif 때문에, iOS 단말상에서는 보다 매끄럽게 움직인다


    SpriteKit



    특징


  • iOS 및 Mac OS X 용 2D 게임 프레임 워크
  • Apple에서 제공
  • UIKit과 쉽게 작동하기
  • 물리 연산, 파티클의 사용이 용이

  • 구현 방법



    대략적인 절차는 아래.

    1. SKScene, SKS 파일을 프로젝트에 추가



    Xcode의 조작 순서. 메뉴의 File -> New -> File -> 각 OS의 Resource를 선택.
    SpriteKit Scene, SpriteKit Particle File을 각각 작성한다.
    이때 파티클은 8종류 중에서 선택할 수 있다. 샘플에서는 "Bokeh"를 이용했다.


    2. SKScene 코드 작성



    LightScene.swift
    import UIKit
    import SpriteKit
    
    class LightScene: SKScene {
    
        let kFadeDuration = NSTimeInterval(1.3)
    
        var lightNode: SKEmitterNode!
    
        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    
        override init(size: CGSize) {
            super.init(size: size)
        }
    
        override func didMoveToView(view: SKView) {
            addPaper()
            showPaper()
        }
    
        override func willMoveFromView(view: SKView) {
            lightNode.removeFromParent()
        }
    
        func addPaper(){
            let fileName = "Bokeh"
            let path = NSBundle.mainBundle().pathForResource(fileName, ofType: "sks")!
            lightNode = NSKeyedUnarchiver.unarchiveObjectWithFile(path) as! SKEmitterNode
            lightNode.position = CGPointMake(self.size.width / 2, self.size.height / 2)
            lightNode.alpha = 0
            addChild(lightNode)
        }
    
        func showPaper(){
            let show = SKAction.fadeInWithDuration(kFadeDuration)
            lightNode.runAction(show)
        }
    }
    
    

    3. ViewController 코드 작성



    ViewController.swift
    import UIKit
    import SpriteKit
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var skView: SKView!
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        override func viewDidLayoutSubviews() {
            super.viewDidLayoutSubviews()
            showParticle()
        }
    
        // MARK: Sprite Kit.
    
        func showParticle() {
            let scene = LightScene(size: skView.frame.size)
            skView.ignoresSiblingOrder = true
            scene.scaleMode = .AspectFill
            skView.presentScene(scene)
        }
    }
    

    Interface Builder로 UIView의 컴퍼넌트를 드래그&드롭 해, 커스텀 클래스에 "SKView"를 설정한다. Outlet도 연결한다.



    4. *.sks 파일 편집



    Xcode내의 에디터로 설정치를 조정할 수 있다.


    샘플 코드


  • htps : // 기주 b. 코 m / 아리 유 / Sp Riteki와 Peuki t

  • 메모


  • 준비되어 있는 파티클은 8종류. Bokeh, Fire, Fireflies, Magic, Rain, Smoke, Snow, Spark.
  • 파티클의 Texture에 임의의 이미지를 설정하면, 알갱이의 형태를 간단하게 변경할 수 있다.
  • 파티클 배경에 이미지를 표시하려면 ViewController 대신 SKScene으로 배경 이미지를 설정합니다.

  • 참고


  • 아직 iOS에서 풍부한 연출에 피폐하고 있는 거야?
  • 【SpriteKit】폭발이나 눈 등의 표현을 할 수 있는 「Particle File」에 대해서
  • Sprite Kit 입문
  • 좋은 웹페이지 즐겨찾기