Apple Engine

Apple, iPhone, iOS, その周辺のことについて

iOS で SceneKit を試す(Swift 3) その68 - PhysicsBody の振る舞い 2

もう1つの項目 Velocity について。
Static は力が加えられることはないのでこの項目はない。

Physics Inspector (Command + Option + 6) の Velocity には以下のパラメーターがある

  

Velocity

f:id:x67x6fx74x6f:20170816101417p:plain

 

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)

 

今回はここまで。