认识SceneKit

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)
}

认识SceneKit_第1张图片
认识一下节点.png

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]

光照效果如下:

spinning-fbe28377.gif

动画

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")

有时间会跟新。。。。

你可能感兴趣的:(认识SceneKit)