しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

SceneKitで3DのiPhoneゲームを作ってみる

3Dゲームを作れるフレームワーク、SceneKitを試してみました。
iPhoneの2Dゲーム用フレームワークのSpriteKitに近いものだと思えば良さそうです。

使い方

まずはプロジェクトの新規作成でGameを選びます。

f:id:llcc:20160419224741p:plain

プルダウンでSceneKitを選択します。

f:id:llcc:20160419224910p:plain

作成したプロジェクトを実行すると、このような3Dの飛行機が動きます。

f:id:llcc:20160419224956p:plain

飛行機の素材は.scnという拡張子のファイルで作られています。

f:id:llcc:20160419225112p:plain

構成としては、SpriteKitと同様に親ビューがあってそこにSceneの配置、その下にNodeを設置していくようです。

let scene = SCNScene(named: "art.scnassets/ship.scn")!
let scnView = self.view as! SCNView
scnView.scene = scene

2Dゲームと違ってカメラやライトがあります。
Positionにzがあるのも特徴的ですね。

let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
scene.rootNode.addChildNode(cameraNode)

let lightNode = SCNNode()
lightNode.light = SCNLight()
lightNode.light!.type = SCNLightTypeOmni
lightNode.position = SCNVector3(x: 0, y: 10, z: 10)
scene.rootNode.addChildNode(lightNode)

回転させる処理は以下の通りです。
SCNActionというクラスを使って実施します。

let ship = scene.rootNode.childNodeWithName("ship", recursively: true)!
ship.runAction(SCNAction.repeatActionForever(SCNAction.rotateByX(0, y: 2, z: 0, duration: 1)))