床・壁無分類モデルでの当たり判定。

床・壁の分類がしづらいケース(部屋が回転するなど・・・)を想定し、 実行時処理として床・壁判別をするサンプルを掲載します。

サンプル1

サンプル内の床・壁判別の判定条件は以下のとおりです。
判定条件結果
ポリゴンの傾斜が45度を超える
ポリゴンの傾斜が45度以下


壁当たり処理のアルゴリズムは、ポリゴンにめり込んだ際、面法線の方向 にめり込んだぶん戻すしくみなので、傾斜した壁にめり込むと、キャラクターが若干 上下に飛ばされる現象があります。
その現象を回避するサンプルを以下に示します。

サンプル2

左右キーでキャラクターが動き、左右の壁との当たり判定でとまります。

なお、CWall は、複数の壁と衝突があるとその影響を合成して、キャラクタを移動させる 仕様なので、合成を避ける目的で地形のモデルを以下のように分割してあります。
(合成すると角での当たりが床になったり壁になったりむしろ不安定化しかねない。)

ファイル名解説(起動時)
y_is_minus_1.x床のモデル。(y=-1の平面)
x_is_plus_1.x右の壁のモデル。(x=1の平面)
y_is_plus_1.x天井のモデル。(y=1の平面)
x_is_minus_1.x左の壁のモデル。(x=-1の平面)