たこやき部屋

SteamVRを使って、Unityでゲームを開発したい

VRTK Ver3.2.0でのポインタと移動を使う

UnityでSteamVRを使う上であれば便利なアセット「VRTK(Virtual Reality Toolkit)」のVer3.2.0でポインタを使った移動方法についてのまとめです。
VRTKのちょっと前のバージョンくらいから、ポインタの使い方が変わっているので、主にそれの解説となります。(今でも昔の方法で一応使えるみたいだけど)

ここで言う「ポインタ」は、コントローラから出てくる例のアレです。
f:id:takoyakiroom:20170204210928j:plain

事前に、以下の記事の方法でVRTKの基本設定をしましょう。
takoyakiroom.hatenablog.com

コントローラからレーザを発射させる

コントローラ用として作った空のオブジェクトに、VRTK→Scripts→Ineteractionsの「VRTK_ControllerEvents」と、VRTK→Scripts→Pointersの「VRTK_Pointer」と、VRTK→Scripts→Pointers→PointerRenderersの「VRTK_StraightPointerRenderer」の3つをくっつけます。
f:id:takoyakiroom:20170704002846j:plain

「VRTK_Pointer」の「PointerRenderer」に、コントローラのオブジェクトを設定。
f:id:takoyakiroom:20170704003633j:plain
これで、コントローラのオブジェクトに設定されていた「VRTK_StraightPointerRenderer」がポインタの表示に使われるようになります。

んで、コントローラのオブジェクトを「VRTK_SDKManager」の「ScriptAliases」に設定します。
f:id:takoyakiroom:20170704231754j:plain

とりあえずポインタを表示させるだけなら、これだけ。
右のコントローラにも同じ設定をしてあげれば、左右のコントローラからレーザー射出!
f:id:takoyakiroom:20170704004244j:plain

「VRTK_StraightPointerRenderer」の代わりに「VRTK_BezierPointerRenderer」を使えば、ベジェ曲線のポインタになります。
f:id:takoyakiroom:20170704004528j:plain

ベジェ曲線だっせー!」とお嘆きのあなたは、サンプルの「036_Controller_CustomCompoundPointer」を参考にカスタマイズしてください。
f:id:takoyakiroom:20170704004535j:plain

ポインタで移動

ポインタで指した先に移動する方法ですが、VRTK→Scripts→Locomotionの「VRTK_BasicTeleport」を適当なオブジェクトに追加するだけです。
とりあえず「PlayArea」って空のオブジェクトを作って、ここに設定しときます。
f:id:takoyakiroom:20170704005146j:plain
「VRTK_BasicTeleport」の代わりに「VRTK_DashTeleport」・「VRTK_HeightAdjustTeleport」とかも使え、移動方法が異なります。
それぞれの挙動はそれっぽい名前のサンプルがあるので、動かしてみてください。