メインコンテンツまでスキップ
バージョン: 1.3.0

コリジョンチェック時に追加されるゲーム内情報

コリジョンチェックでは通常では使用しないゲーム内情報が必要となります。 以下はゲーム起動オプションで-CollisionTestMode=Trueを指定した場合に追加で送信されるゲーム内情報です。

CollisionTestMode=True で追加される情報

タイトル画面以外で以下の情報が追加されます。

  • PlayerHit: プレイヤーが壁と衝突しているか?(bool)
  • IllegalPoints: 配列
    • IsDetect: 検出したか bool
    • Location: 検出した座標
      • X: 位置座標_X (float)
      • Y: 位置座標_Y (float)
      • Z: 位置座標_Z (float)

PlayerHit

プレイヤーキャラクターが壁に接触しているとTrueを返します。

プレイヤーの中心と衝突位置の高さを比較し、近い場合のみTrueを返すというロジックが現在プラグイン内でハードコーディングされています。

IllegalPoints

コリジョン抜け検出用のレイキャストの結果を格納しています。 プレイヤーの周囲 16 方向とプレイヤーの真上の合計 17 個の配列です。

image.png

Key解説
IsDetectコリジョン抜けが検出された場合にTrue
Locationコリジョン抜けが検出された位置座標

コリジョン抜け検出で行っているレイキャスト

以下のようにレイを飛ばしてコリジョン抜け検出をします。

  1. プレイヤーの周囲 16 方向に水平方向に [周辺探査の距離] 、垂直下方向に [プレイヤーの身長] の地点に向けて 半径=5 の球を飛ばす
  2. 水平方向に飛ばした球がヒットした場所 (ヒットしなかった場合はレイキャストの終点) から上空にライン(点)を飛ばす
    • 半径を最初よりも小さくすることで、最初に衝突したオブジェクトへのヒットを避けている

image.png

コリジョン抜けの検出

上記のレイキャストで、以下のような判定でコリジョン抜けを検出しています。

  • 上空に飛ばしたレイが Landscape(UE の地形生成システム)に衝突した場合、本来あり得ない地表の下に入り込んでしまうパスがあるという事なので、コリジョン抜けと判定