Easy3D関連ネタ/線分衝突判定系は、当たり判定は一瞬

Last-modified: 2009-11-08 (日) 04:27:47

公式BBS No.7531

問題の発端

E3DChkConfGroundPartで、地面オブジェクトとして読み込んだ扉と衝突しているとき、エンターを押すと移動するようにしたいが、なぜか反応してくれない。

原因

E3DChkConfGroundPartはE3DSetBeforePosした座標と現在の座標とを結ぶ線分と地面の判定をする。
つまりこの線分が扉を突き抜けていないときは当たり判定されない
突き抜けた瞬間にエンターキーを押すのは至難の業。
ここに、単なるモデル同士の当たり判定とは違った難しさがある。

解決法

  • 当たった瞬間に処理をする。
    • エンターを押さなくても触れただけで移動させる
    • あたりを検出したら「エリア移動しますか?YES、NO」みたいなダイアログやボタンを表示するなど
  • 難しければ扉を地面にするのはやめてキャラクター扱いしてみる(E3DChkConflict2を使う)

E3DChkConflict2を使う場合のポイント

E3DChkConflict2なら自分が動いていなくてもあたりを検出できる(傾いたボックス同士の判定)。
ボックスの傾きはボーンの傾きから計算するので、扉の中央に上下方向にボーンを一本入れておくと良い。
扉には厚みをつけるべし。