フォト

Google AdSense


  • AdSense
無料ブログはココログ

« うちのボスの | トップページ | Bullet »

2008.09.17

Bulletの衝突コールバック

個人的にBulletの衝突コールバックの使い方を調べてコードを書いてみたのですが無事に動いたなぁ。

衝突コールバックに関しては、PhysXよりも簡単に使えるみたい(PhysXもたいして難しくはない)ですが、下記の記述だけ読んでも使い方がよくわからんかったりするよなぁ。相変わらず、ドキュメントが微妙。

http://www.bulletphysics.com/mediawiki-1.5.8/index.php?title=Collision_Callbacks_and_Triggers

とりあえず、上記の記述とSDKのサンプルを見比べながら実装してみたのですが、ちょっと変なところにはまってしまったな。

とりあえず、試しに作ったBulletのカスタムコールバック(gContactProcessedCallback)のサンプルのダウンロード
http://www.shader.jp/xoops/html/modules/mydownloads/singlefile.php?cid=5&lid=27

今回は、衝突球のオブジェクトが何かに衝突すると(0, 5, 0)という速度がセットされます。

実装メモ

gContactProcessedCallbackを使う場合、まずはグローバルに

extern ContactProcessedCallback gContactProcessedCallback;

を書いておく。次にカスタムコールバック用の実際の関数の記述を書く。今回は下記のようなものにした。

static bool ContactCallBack(btManifoldPoint& cp, void* body0,void* body1)

InitBullet()関数内で、

gContactProcessedCallback = ContactCallBack;

をセット。以上でコールバックに処理が飛ぶハズ。gContactAddedCallbackやgContactDestroyedCallbackに関しても大体同じような感じでOK。

« うちのボスの | トップページ | Bullet »

Programming」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« うちのボスの | トップページ | Bullet »