1、创建一个scene
Scene Kit 内建了几种简单的几何模型,如盒子、球体、平面、圆锥体等,但对于游戏来说,一般都会从文件中加载3D模型。
a、如果一个从文件里加载的场景可以全部显示时,将其设置成 SCNView 的 scene 就好了;
// Create a new scene
let scene = SCNScene(named: "art.scnassets/SceneKitScene.scn")!
b、如果加载的场景文件中包含了多个对象,只有一部分对象要显示在屏幕上时,就可以通过名字找到这个对象,再手动加载到 view 上: (有点像Unity 获Cocos2d)
if let knight = chessPieces.rootNode.childNodeWithName("Knight", recursively: true) {
sceneView.scene?.rootNode.addChildNode(knight)
}
addChildNode(_:)
insertChildNode(_: atIndex:)
removeFromParentNode()
如果想在一个Node下拥有多个“马”的话,直接使用copy 或者clone,这样你的材质模型都是一模一样的。如果你想拥有不同颜色的的“马”,材质改变就可以了,那就意味着你要copy一个模型对象,单独附上你的不同的材质。
光照
Scene Kit 中完全都是动态光照,使用起来一般会很简单。它提供四种类型的光照:环境光、定向光源、点光源和聚光灯。 ambient, directional, omnidirectional (point lights), and spotlights.
let spot = SCNLight()
spot.type = SCNLightTypeSpot
spot.castsShadow = true
let spotNode = SCNNode()
spotNode.light = spot
spotNode.position = SCNVector3(x: 4, y: 7, z: 6)
let lookAt = SCNLookAtConstraint(target: knight)
spotNode.constraints = [lookAt]
光照效果如下:
动画
Scene Kit 的动画更加简单,创建一个 CAAnimation 对象,并指定一个 key path (甚至可以 "position.x") ,然后向一个对象施加这个动画,就可以了。
let move = CABasicAnimation(keyPath: "position.x")
move.byValue = 10
move.duration = 1.0
knight.addAnimation(move, forKey: "slide right")
有时间会跟新。。。。