今日は Bullet の不具合?回避のネタです。
TriangleMesh の道路だと引っくり返る
SIO2 ゲームエンジンは物理エンジンとして Bullet を使っています。
で、Vehicle を TriangleMesh 製の道路上で走らせてみたところ、Triangle の境界で急に車体がひっくり返ってしまい、ゲームにならない!ということがあって困っていました。
で、調べたところ、こんなスレがありました。
http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=&f=9&t=3052
そこに載っている NotifyOnCollision 関数を定義して、
gContactAddedCallback = NotifyOnCollision;
を初期化時に実行するようにしたところ、解決。
gContactAddedCallback というのは bullet で定義されているシンボルで、以下の extern 宣言をすれば参照できます。
extern ContactAddedCallback gContactAddedCallback;