本系列文章是對<3D Apple Games by Tutorials>一書的學習記錄和體會git
此書對應的代碼地址github
SceneKit系列文章目錄swift
動做能夠讓你操做節點的位置,縮放,旋轉和透明度.好比左滑,場景中的小豬向左轉並跳一步. 基本分類有四種:Move(移動), Scale(縮放), Rotate(旋轉)和Fade(透明漸變).還有兩種特殊的動做:Sequence(序列,即順序執行)和Group(組,即同時執行).併發
注意,關於物理形體physics bodyapp
當須要物理引擎來控制節點的移動和旋轉時,應設置爲dynamic.若是不須要移動,但仍能參與物理模擬,應設置爲static.若是你既想控制某些節點的移動和旋轉,同時仍能參與物理模擬,應設置爲kinematic.編輯器
序列和組都是一系列動做的組合,能夠讓動做更復雜 oop
拖放一個旋轉動做到節點,設置開始時間和持續時長,指定爲繞z軸旋轉 post
// 1.時長
let duration = 0.2
// 2.上下移動動做
let bounceUpAction = SCNAction.moveByX(0, y: 1.0, z: 0, duration:
duration * 0.5)
let bounceDownAction = SCNAction.moveByX(0, y: -1.0, z: 0, duration:
duration * 0.5)
// 3.時間模式
bounceUpAction.timingMode = .EaseOut
bounceDownAction.timingMode = .EaseIn
// 4.動做序列
let bounceAction = SCNAction.sequence([bounceUpAction, bounceDownAction])
// 5.四周移動動做
let moveLeftAction = SCNAction.moveByX(-1.0, y: 0, z: 0, duration:
duration)
let moveRightAction = SCNAction.moveByX(1.0, y: 0, z: 0, duration:
duration)
let moveForwardAction = SCNAction.moveByX(0, y: 0, z: -1.0, duration:
duration)
let moveBackwardAction = SCNAction.moveByX(0, y: 0, z: 1.0, duration:
duration)
// 6.旋轉動做
let turnLeftAction = SCNAction.rotateToX(0, y: convertToRadians(-90), z:0, duration: duration, shortestUnitArc: true)
let turnRightAction = SCNAction.rotateToX(0, y: convertToRadians(90), z:
0, duration: duration, shortestUnitArc: true)
let turnForwardAction = SCNAction.rotateToX(0, y: convertToRadians(180),
z: 0, duration: duration, shortestUnitArc: true)
let turnBackwardAction = SCNAction.rotateToX(0, y: convertToRadians(0),
z: 0, duration: duration, shortestUnitArc: true)
// 7.動做組
jumpLeftAction = SCNAction.group([turnLeftAction, bounceAction,
moveLeftAction])
jumpRightAction = SCNAction.group([turnRightAction, bounceAction,
moveRightAction])
jumpForwardAction = SCNAction.group([turnForwardAction, bounceAction,
moveForwardAction])
jumpBackwardAction = SCNAction.group([turnBackwardAction, bounceAction,
moveBackwardAction])
複製代碼