yashinutこんにちは、なっつーです。(この記事はUE4.15.1時点での内容です。)VR内で視線入力を使うことはないでしょうか?見てる方向のオブジェクトをターゲットしたいときなどあるかと思います。遠くの物や小さい物をターゲットするのが難しいので、より快適に操作するために、SphereTracew使用します。左右が約40°、上下が約45°あります。下図のような範囲でのトレースを行うことができます。今回は、VirtualRealityのテンプレートを使用します。BP_PickupCube(画像の青いキューブ)をターゲットにする対象とします。視線入力を受けたときの関数をブループリントインターフェースで作成します。テンプレートに既存のPickupActorInterfaceを編集し、LockOn関数を作成します。次に、BP_PickupCubeのイベントグラフに下記のように、Targetされているときだけマテリアルを変更するノードを組みます。最後にMotionControllerPawnにてトレース部分のノードを組みます。SphereTraceだと、一番近い位置のオブジェクトがターゲットされてしまうため、MultiSphereTraceを使用します。複数トレースヒットした場合は、一番中心にあるものがターゲットされるように、カメラの向きと方向ベクトルの差を計算し、一番小さいものを選んでます。これでVRプレビューすると、トレースヒットしているポイントが赤四角で、ターゲットされているオブジェクトは灰色に変化してます。このようにカメラ中心(画面上だと右上に寄っているが、VR内だと真ん中に表示されている)に一番近いオブジェクトを選択することができます。おまけ上記の方法だと距離が遠くなったときに、視野角に対してトレースできる範囲が狭くなります。第2トレースでヒットしなければ、第3トレース開始・・というようにすればいいかもしれません。コメントをキャンセルメールアドレスが公開されることはありません。