たまには、小ネタでサクッと更新
BPだけ見たい人は、「BPでCollision位置を補正」の項に飛んで下さい
はじめに
下のようにコンポーネントを組んで、
カメラに紐付けたCollisionBoxに当たるとダメージ、というゲームを作るとします。

通常ですと、単にCollisionBoxのHit・Overlapイベントを見るだけです。
しかし、OculusRiftを用いた場合はBPで一工夫する必要があります
理想と現実
OculusRift画面に切り替えた後のカメラを「HMDカメラ」とします。
OculusRiftのトラッキングでHMDカメラが移動・回転するのですが、
切り替え前のカメラ(FirstPersonCamera)にはトラッキング結果が
反映されていません!
つまり、こんな事が起こってしまします(赤い□はCollision Boxです)
OculusRiftを被って盛大に避けても、実際の当たり判定位置が
変わりません。これではゲームになりません…
BPでCollision位置を補正
- まずは、OculusRift画面に切り替え中か?の判定を「Is Head Mounted Display Enabled」で行ってます。
- 次に、「Get Orientation and Position」でHMDカメラの位置・姿勢を取得します。この位置・姿勢は切り替え前カメラ(FirstPersonCamera)からの相対的な情報です。
- あとは、自身の位置 → 切り替え前カメラ → HMDカメラ → HMDカメラの前方20、という流れで座標を導き出して、CollisionBoxの座標を更新しています
参考:
Unreal Engine の XR ベスト プラクティス | Unreal Engine 5.4 ドキュメンテーション | Epic Developer Community
