コリジョンチェック時に追加されるゲーム内情報
コリジョンチェックでは通常では使用しないゲーム内情報が必要となります。
以下はゲーム起動オプションで-CollisionTestMode=True
を指定した場合に追加で送信されるゲーム内情報です。
CollisionTestMode=True で追加される情報
タイトル画面以外で以下の情報が追加されます。
PlayerHit
: プレイヤーが壁と衝突しているか?(bool)IllegalPoints
: 配列IsDetect
: 検出したか boolLocation
: 検出した座標X
: 位置座標_X (float)Y
: 位置座標_Y (float)Z
: 位置座標_Z (float)
PlayerHit
プレイヤーキャラクターが壁に接触しているとTrue
を返します。
プレイヤーの中心と衝突位置の高さを比較し、近い場合のみ
True
を返すというロジックが現在プラグイン内でハードコーディングされています。
IllegalPoints
コリジョン抜け検出用のレイキャストの結果を格納しています。 プレイヤーの周囲 16 方向とプレイヤーの真上の合計 17 個の配列です。
Key | 解説 |
---|---|
IsDetect | コリジョン抜けが検出された場合にTrue |
Location | コリジョン抜けが検出された位置座標 |
コリジョン抜け検出で行っているレイキャスト
以下のようにレイを飛ばしてコリジョン抜け検出をします。
- プレイヤーの周囲 16 方向に水平方向に [周辺探査の距離] 、垂直下方向に [プレイヤーの身長] の地点に向けて 半径=5 の球を飛ばす
- 水平方向に飛ばした球がヒットした場所 (ヒットしなかった場合はレイキャストの終点) から上空にライン(点)を飛ばす
- 半径を最初よりも小さくすることで、最初に衝突したオブジェクトへのヒットを避けている
コリジョン抜けの検出
上記のレイキャストで、以下のような判定でコリジョン抜けを検出しています。
- 上空に飛ばしたレイが Landscape(UE の地形生成システム)に衝突した場合、本来あり得ない地表の下に入り込んでしまうパスがあるという事なので、コリジョン抜けと判定