iOS で SceneKit を試す(Swift 3) その68 - PhysicsBody の振る舞い 2
もう1つの項目 Velocity について。
Static は力が加えられることはないのでこの項目はない。
Physics Inspector (Command + Option + 6) の Velocity には以下のパラメーターがある
Velocity
Linear velocity
物理アニメーション時に現在の移動に加え指定した方向へ力を与える。
デフォルト値は x: 0.0 y: 0.0 z: 0.0
x を 1 にすると、プラス方向に メートル/秒 で移動の力が働く。
値を読み取る際は SCNSceneRendererDelegate プロトコルのアニメーションループの状況に異なるので注意。
Angular velocity
物理アニメーション時に現在の回転に加え指定した方向へ力を与える。
デフォルト値は x: 0.0 y: 0.0 z: 0.0
x を 1 にすると、プラス方向に メートル/秒 で回転の力が働く。
Linear velocity 同様。
値を読み取る際は SCNSceneRendererDelegate プロトコルのアニメーションループの状況に異なるので注意。
Linear factor
物理アニメーションの移動方向に制限を与える。
デフォルト値は x: 1.0 y: 1.0 z: 1.0
x: 1 y: 1 z: 0 に設定すると Z 軸方向の移動が行われなくなり、2次元平面を移動しているようになる。
Angular factor
物理アニメーションの回転方向に制限を与える。
デフォルト値は x: 1.0 y: 1.0 z: 1.0
x: 0 y: 1 z: 0 に設定すると Y 軸方向のみ回転する。
コード
let ball = SCNSphere(radius: 1) let ballNode = SCNNode(geometry: ball) ballNode.position.y = 10 ballNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil) ballNode.physicsBody?.velocity = SCNVector3(0,0,0) ballNode.physicsBody?.angularVelocity = SCNVector4(0, 0, 0, 1) ballNode.physicsBody?.velocityFactor = SCNVector3(1, 1, 1) ballNode.physicsBody?.angularVelocityFactor = SCNVector3(1, 1, 1) scene.rootNode.addChildNode(ballNode)
今回はここまで。