12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SpriteKitを試してみる1 炎とライト

Posted at

タイトル通りなんですが、試しに炎、そしてそれが光源になるようにライト処理を足してみました。

iphonePlay_2015011801.gif

1.Xcodeで新しいプロジェクトを作る際に、Gameを選択し、更にGame Technologyで「SpriteKit」を選択。

スクリーンショット 2015-01-18 17.19.36.png

2.プロジェクトにファイル追加で「SpriteKit Particle File」を選択。

スクリーンショット 2015-01-18 17.21.56.png

3.火は色を好きに変えられるので、青にしてみました。

スクリーンショット 2015-01-18 17.50.38.png

4.サンプルのタップイベントを上書きしてタップした場所に炎を出すようにする。炎を出してもそれは光源ではない。よって光源とするべく、炎を出した場所にライトを追加。光の色を炎と同じにしておく。

GameScene.swift
 override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        /* Called when a touch begins */
        
        for touch: AnyObject in touches {
            let location = touch.locationInNode(self)
            
            
            let firePath = NSBundle.mainBundle().pathForResource("MyParticle", ofType: "sks")
            
            var fire = SKEmitterNode()
            fire = NSKeyedUnarchiver.unarchiveObjectWithFile(firePath!) as SKEmitterNode
            
            fire.xScale = CGFloat(0.5)
            fire.yScale = CGFloat(0.5)
            fire.position = location
            
            self.addChild(fire)
            
            let lightSprite = SKLightNode()
            lightSprite.position = location
            lightSprite.name = "lightSprite"
            lightSprite.categoryBitMask = 1
            lightSprite.lightColor = UIColor.blueColor()
            self.addChild(lightSprite)
            
            
        }
    }
   

5.光源があることによる影が出来るのはSKSpriteNodeだけなので、背景に追加。

GameScene.swift
    override func didMoveToView(view: SKView) {
        /* Setup your scene here */
        let myLabel = SKLabelNode(fontNamed:"Chalkduster")
        myLabel.text = "Hello, World!";
        myLabel.fontSize = 65;
        myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
        self.addChild(myLabel)
        
        let sprite = SKSpriteNode(color: UIColor.grayColor(), size: CGSizeMake(300, 300))
        
        sprite.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
        sprite.lightingBitMask = 1
        
        self.addChild(sprite)
    }

以上、簡単におもしろい演出が出来ていいですね。どこかで利用出来たらいいなあ。

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?