
pivot使ってボールをくるくる動かすiPhoneアプリのサンプルコードを描いてみます。
import UIKit
import SceneKit
class ViewController: UIViewController {
weak var sceneView : SCNView?
override func viewDidLoad() {
super.viewDidLoad()
setupScene()
createBall()
createCamera()
}
func setupScene() {
let sv = SCNView(frame: view.bounds)
sv.backgroundColor = UIColor.whiteColor()
sv.scene = SCNScene()
sv.autoenablesDefaultLighting = true
sv.allowsCameraControl = true
view.addSubview(sv)
sceneView = sv;
}
func createBall() {
let ball = SCNSphere(radius: 1)
ball.firstMaterial?.diffuse.contents = UIColor.redColor()
let ballNode = SCNNode(geometry: ball)
ballNode.pivot = SCNMatrix4MakeTranslation(0, 1, 1)
sceneView?.scene?.rootNode.addChildNode(ballNode)
ballNode.runAction(
SCNAction.repeatActionForever(
SCNAction.sequence([
SCNAction.moveTo(SCNVector3(x: 5, y: 0, z: 0), duration: 1.5),
SCNAction.moveTo(SCNVector3(x: –5, y: 0, z: 0), duration: 1.5)
])
));
ballNode.runAction(
SCNAction.repeatActionForever(
SCNAction.rotateByX(CGFloat(M_PI), y: 0, z: 0, duration: 0.2)
));
let bar = SCNBox(width: 10, height: 1, length: 1, chamferRadius: 0.2)
bar.firstMaterial?.diffuse.contents = UIColor.brownColor()
let barNode = SCNNode(geometry: bar)
sceneView?.scene?.rootNode.addChildNode(barNode)
}
func createCamera() {
let camera = SCNNode()
camera.camera = SCNCamera()
camera.position = SCNVector3(x: 0, y: 0, z: 20)
sceneView?.scene?.rootNode.addChildNode(camera)
}
}