頭と尻尾はくれてやる!

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


Bulletではsleep状態だと力を加えても動かない

Bulletで糸みたいなもの(btPoint2PointConstraint)でrigid bodyを吊るしてるような状態があって、そのオブジェクトをタップするとその位置に力を加える、というのをやろうとしたのよ。
ところが力を加えても動かないことがよくあるんだ。そのくせ、ちゃんと動いた物体と接触した後だと意図通りに動いたりするんだ。まるで寝てたのか?って感じ。
そういうのがあるのかな?と思って調べるとBulletではオブジェクトに一定時間変化がないと実際にsleepという状態になるんだってさ。そういうことだったのか。

kinematic objectなり他のrigid bodyなんかに当てられた場合は問題ないけど、コードで力をかける時には要注意ってことらしいよ。

rigidBody->activate();
↑でsleep状態から目覚めてくれる。

rigidBody->applyImpulse(btVector3(fx,0,.0) , btVector3(x,y,z));
↑起こしてから力を与えるとか。

BOOL isActivate = rigidBody->isActive();
↑ちなみに状態を確認するにはこれでBOOL値がとれるよ。

<< Blenderで面取りはモディファイアのBevelで  TopPage  メモリリークの原因はBulletかOpenGLか? >>

コメント


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

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/907-258ef149




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

FC2Ad