FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


SceneKitで動ける次元を拘束する

3Dの物理エンジンを使いつつも「この動きは二次元でいい!」って時あるよね。



↑以前アップした動画なんだけど、この時の動きは実質xy平面(赤がx軸、y軸は平面に垂直な方向)の二次元なのでホントはそういう指定をしたかった。
3D物理エンジンのBulletにはそういう機能があったので探したけどSceneKitでは見つからなかったのであきらめていた。なので動画だと途中からy軸に対して無駄に回転というかずれてしまってる。

別件でリファレンス見てたらそれを設定できるプロパティが見つかった!
SCNPhysicsBodyクラスに
velocityFactor
angularVelocityFactor
ってのがある。

velocityFactorでオブジェクトの移動
angularVelocityFactorでオブジェクトの回転
をそれぞれ制限できる。
{
    node.physicsBody.velocityFactor = SCNVector3Make(1.0 , 1.0 , 0);
    node.physicsBody.angularVelocityFactor = SCNVector3Make(0.0 , 0.0 , 1.0);
}
↑先ほどのxy平面で扱うような場合はこんな感じで指定すればOK。



↑動き方が二次元に変わった!
ホントは画面を右へ行くはずなんだけどむしろ左にじわじわ行ってるやん、、、というのは置いといて、ともかくxy平面上で動くようになってる。


それにしても、、、なんで ‘(angular) velocity factor’って名前にしたんだろうな、、、?別に速度だけじゃないのに。

<< SCNPhysicsSliderJointで回転させてみる  TopPage  SCNPhysicsVehicleで二輪車と一輪車 >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1164-113306e1




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad