見出し画像

【Unity VRゲーム制作】#11 VR空間の移動方法<テレポーテーション編 #2>

こんにちは!ぶぁんぶーる・らぼの大島です。
当教室に通う生徒が「より面白い」と感じるコースは何かと考えた時に「VRゲーム制作コース」を思いつきました。
VRゲームを作るうえで実施した作業などをまとめていきます。


XR Interaction ToolkitではLocomotion(移動方法)が複数用意されています。具体的な移動方法は、
・テレポーテーション
・スナップターン
・連続ターン
・連続移動
・グラブムーブ
・登る
です。
これらの移動方法は「Locomotion System」と各種「Provider」によって制御されているようです。

https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.5/manual/locomotion.html

酔いにくい移動方法:テレポーテーション

前回の作業の続きをやっていきます。

①XR Ray Interactorのおさらい

テレポーテーションを実現する際に使用するスクリプト「XR Ray Interactorスクリプト」は、コントローラの向いている延長線上に「直線・発射物曲線・ベジェ曲線」のいずれかでテレポートしたい位置を推定します。
このとき、テレポート先を明示するために「Line Renderer」と「XR Interactor Line Visualスクリプト」が必要になるようです。
これらのコンポーネントを適切に設定することで、テレポート先を曲線等でプレイヤーに明示できるようです。

<変更した点の説明(一部)>
・Interaction Layer Mask
Interaction Layer Maskに設定されているレイヤーと同じものとだけ、作用するようにできます。「Teleport」を選択しました。
・Enable Interaction with UI GameObjects
このインタラクターがUIに影響を与えることができるかを許可します。
今回の場合、テレポーテーションはUIを操作しないのでOFFにします。
・Line Type
レイキャストの種類を3つから選べます。ゲームの雰囲気に合わせて選びましょう。
・Select Action Trigger:State
Unityがコントローラからの選択入力アクションをどのように解釈するかを選択します。その中でも「State」は、ボタンが押されている間、入力がアクティブであるとみなされます。
プレイヤーはインタラクションが可能になる前にボタンを押したままにし、可能な場合にはインタラクションをトリガーすることができます。

②XR Interactor Line Visualのおさらい

<変更した点の説明(一部)>
・Line Origin Transform
発射物曲線の開始位置と方向を、別のTransformをしようするかを制御します。今回の場合は、右手用コントローラをアタッチして、コントローラの位置と方向を曲線の開始位置に設定しています。
・Reticle
「Teleportation Area」と「XR Rayの曲線」が交差する点において、テレポーテーションが有効な場合に表示されるオブジェクトです。
移動可能なことを明示する重要なオブジェクトだと思います。
ゲームの雰囲気に合わせてオリジナルを用意しましょう。
・Blocked Reticle
「Teleportation Area」と「XR Rayの曲線」が交差する点において、テレポーテーションが無効な場合に表示されるオブジェクトです。
移動可能なことを明示する重要なオブジェクトだと思います。
ゲームの雰囲気に合わせてオリジナルを用意しましょう。

③移動できるように設定してみる

まずはじめに、「Hierarchy」内にある「Right Controller」の「Teleport Interactor」に「Add Component」で「XR Controller(Action-based)」を追加してください。

右手用コントローラのテレポーテーションの設定で使用するのは、
「Input」の
・Select Action
・Select Action Value
・Activate Action
・Activate Action Value
・Haptic Device Action
・Rotate Anchor Action
・Directional Anchor Rotation Action
で「Reference」に画像と同じものを選択してください。
使用しないReferenceもチェックマークを入れてください。

④動作確認をしよう

プレイボタンを押して動作確認をしましょう。
右手用コントローラを「Teleportation Area」に向けると、コントローラから出ている放物線が赤色から緑色に切り替わり、床と放物線の交点にレティクルが表示されます。
表示されている状態で、上方向にパッドを入力すると、レティクルの位置に移動します。

おわりに

色々と設定をしてきましたが、無事に移動することができました。
しかし、左右のコントローラにはいろいろな役割を持たせたいですが、このままではテレポーテーション用のレティクルが絶えず表示されてしまいます。

放物線が常時表示されないようにするためにも、コントローラの機能について整理していきたいと思います。

ここまで読んでくださり、ありがとうございました。


この記事が気に入ったらサポートをしてみませんか?