路線バス運転シミュレータ開発記

OMSIを使って路線バスの運転シミュレータを製作しています。備忘録的にゆるーく書いていきたいと思いますので、お付き合いいただければ幸いです。

当たり判定がうまくいかないとき

トンネルや橋のオブジェクトを作成したとき、自車が通過しようと思った部分が通過できずに跳ね返ってきてしまうことがあります。
これは当たり判定を行う際に、デフォルトではオブジェクト全体を囲むようなコリジョンメッシュが生成されるためで、scoファイルに以下の記載をすればオブジェクトの形状に即した当たり判定が行われるようになります。

[mesh]
xxx.o3d

[collision_mesh]
xxx.o3d

 通常、[collision_mesh]に指定する図形は[mesh]に指定しているものと同一で問題ないですが、複雑なオブジェクトの場合、それを当たり判定用のメッシュとして使うとコンピュータのパフォーマンスが落ちる可能性があるので、そういった場合は本来のメッシュに近似した簡略版を用意して[collision_mesh]として指定すれば良いかと思います。
それと、簡単なことでハマったので書き添えておきますが、以前[collision_mesh]にx形式のファイルを指定していたことがあったのですが、なぜか何度やっても当たり判定がうまくいきませんでした。
調べてみると、o3d形式のときは当たり判定がうまくいっているので、もしうまくしかないことがあったらその部分も確認すると良いかもしれません。
特に交差点オブジェクトを作成するときは必ずo3d形式を使った方が良いようです。x形式を使うとバスが通過できなかったり、物理計算に失敗するのかよくわかりませんが交差点の途中で突然暴走するということがありました。