タイトル通りなんですが、試しに炎、そしてそれが光源になるようにライト処理を足してみました。
1.Xcodeで新しいプロジェクトを作る際に、Gameを選択し、更にGame Technologyで「SpriteKit」を選択。
2.プロジェクトにファイル追加で「SpriteKit Particle File」を選択。
3.火は色を好きに変えられるので、青にしてみました。
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)
}
以上、簡単におもしろい演出が出来ていいですね。どこかで利用出来たらいいなあ。