#6「トリガーの押し具合やトラックパッドの位置情報の入力を取得する」【初心者】HTC VIVE Pro Eyeを使ってUnityでVRの開発を行ってみる．

#はじめに

[前回](https://qiita.com/RyoyaHase/items/89ffc9d134b784b8ae50)まででボタンが押されているのかの入力を取得したので今回はトリガーの押し具合やトラックパッドの触っている位置座標を取得していく．最初の1章2章は前回と同じ内容なので読み飛ばしても大丈夫．


環境一覧
[SteamVR](https://store.steampowered.com/app/250820/SteamVR/?l=japanese) 1.16.10
[Unity](https://unity3d.com/jp/get-unity/download) 2019.4.27f1 or 2020.1.17f1（動作確認済み，非対応なSDKあり）

[SteamVR Plugin](https://assetstore.unity.com/packages/tools/integration/steamvr-plugin-32647) 2.7.3
[Vive SRanipalRuntime Plugin](https://hub.vive.com/en-US/download) 1.3.2.0


追加アクセサリー
[VIVEトラッカー2018](https://www.amazon.co.jp/dp/B0748ZY323/ref=cm_sw_r_tw_dp_QDZSM4A3844PSM33DB3R?_encoding=UTF8&psc=1)
[Ovrvision Pro（ステレオカメラ）](https://www.amazon.co.jp/dp/B01N7H8YUM/ref=cm_sw_em_r_mt_dp_6TGRDF5BWQPW2PJ1H4WN)
[Leap Motion](https://www.amazon.co.jp/Leap-Motion-Controller/dp/B075T4MH77/ref=asc_df_B075T4MH77/?tag=jpgo-22&linkCode=df0&hvadid=342463500927&hvpos=&hvnetw=g&hvrand=13721783060484696807&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009320&hvtargid=pla-945077929421&psc=1)


使用PCスペック
インテル® Core™ i7-7700K
NVIDIA GeForce GTX 1070

- **環境作成編**

 #1 [Unityのセットアップをする](https://qiita.com/RyoyaHase/items/5a173b7acbdf9aa2cfff)　2021年 1月更新

 #2 [プロジェクトを作ってみる](https://qiita.com/RyoyaHase/items/7b2148e9034584db7420)　2021年 1月更新

 #3-α [Unity2019でVR開発のための環境を整える（SteamVR Plugin2.7.Xをインストールする）：推奨](https://qiita.com/RyoyaHase/items/36910ec8a0b3d8122f8c)　2021年 6月更新

 #3-β [Unity2020でVR開発のための環境を整える（SteamVR Plugin2.7.Xをインストールする）](https://qiita.com/RyoyaHase/items/b7b5f8a7110810c1c0f1)　2021年 5月更新

 #3-おまけ [UnityでVR開発のための環境を整える（SteamVR Pluginの最新版をインストールする）：非推奨](https://qiita.com/RyoyaHase/items/f8b4fb5b04d9f02aae49)　2021年 2月更新

 #4 [SteamVRのダウングレードと自動アップデートの停止（上級者向け）](https://qiita.com/RyoyaHase/items/0dab278b080f517032a0)　2021年 5月更新


- **コントローラの入力やトラッカー，HMDの位置座標，回転座標を得る＋α**

 #5 [VIVEコントローラのボタン入力を取得する](https://qiita.com/RyoyaHase/items/89ffc9d134b784b8ae50)　2021年 2月更新

 #6 [__トリガーの押し具合やトラックパッドの位置情報の入力を取得する（この記事）__](https://qiita.com/RyoyaHase/items/81fa026f68aee02fa5d4)　2021年 2月更新

 #6-おまけ [VIVEコントローラを使った開発をする時のおすすめ設定（独断と偏見）](https://qiita.com/RyoyaHase/items/d622e1bb0e345cf78f4f)　2021年 5月更新

 #7 [ヘッドマウントディスプレイとコントローラの位置座標と回転を取得する](https://qiita.com/RyoyaHase/items/325e7250c01f47e7e63b)　2021年 2月更新

 #8 [VIVEトラッカー2018を有効化してUnity上で位置座標と回転を取得](https://qiita.com/RyoyaHase/items/015bbb8671833ef8e740)　2021年 5月更新

 #9 [VIVEコントローラの振動機能を開発してみる](https://qiita.com/RyoyaHase/items/0690761fed2e71f6d517)　2021年 4月更新


- **VIVE Pro Eyeのアイトラッキングを使ってみる**

 #10 [VIVE Pro Eyeの視線トラッキングを有効化（セットアップ）する](https://qiita.com/RyoyaHase/items/024f3589547d1af84a92)　2021年 4月更新

 #11 [VIVE Pro Eyeのアイトラッキングを使ってUnity上で瞬きや視線のデータを取得する](https://qiita.com/RyoyaHase/items/5af948666a039d48a68d)　2021年 4月更新

 #11-おまけ [VIVE Pro Eyeのアイトラッキングで計測できるデータについて（適宜更新）](https://qiita.com/RyoyaHase/items/044826488e763f896a0f)　2021年 4月更新


- **VIVE Pro Eyeのカメラを使ってみる**

 #12 [VIVE Pro Eyeのフロントカメラの解像度（性能）とAR機能を有効化について](https://qiita.com/RyoyaHase/items/853938ec7c8745ec811c)　2021年 5月更新


- **小技**

 [プレイエリアの境界線（シャペロン境界）が表示されないように設定を変更する](https://qiita.com/RyoyaHase/items/57296d7753877afc6f34)　2021年 6月更新

 [Unity上でカメラを複数台追加してHMDやコントローラの動きを見る](https://qiita.com/RyoyaHase/items/4b4733503d53c8387db4)　2021年 6月更新


- **Ovrvision Pro（ステレオカメラ）を使ってAR開発してみる**

 ＄1-1 [Ovrvision Pro（ステレオカメラ）のセットアップをして実際に動かしてみる](https://qiita.com/RyoyaHase/items/262ad2133ee89d00b3cb)　2021年 6月更新

 ＄1-2 [Ovrvision Pro（ステレオカメラ）とHMDを使ってARアプリ開発する](https://qiita.com/RyoyaHase/items/4abcd90f0f2319c89114)　2021年 6月更新

- **Leap Motionを使ってハンドトラッキングしてみる**

 ＄2-1 [Leap Motion（ハンドトラッキング）のセットアップをして実際に動かしてみる](https://qiita.com/RyoyaHase/items/6891c21c8c21dcb08b2f)　2021年 6月更新

 ＄2-2 [Leap Motion（ハンドトラッキング）とHMDを使ったインタラクティブなアプリ開発する](https://qiita.com/RyoyaHase/items/b0f6cd1d7474286f99ed)　2021年 6月更新

- **アプリを作ってみる**

  [VR（仮想空間）上に曲面ディスプレイを作成して大画面で広角WEBカメラ映像を見る](https://qiita.com/RyoyaHase/items/cc57e67799c1b14ef15d)　2021年 5月更新



今回の記事では，

1．シーンとスクリプトを新規作成する．
2．コントローラとUnityの接続設定を行う．
3．トリガーの入力をフロートで取得する．
4．トラックパッドの入力を二次元座標で取得する．

という流れ．

#1．シーンとスクリプトを新規作成する．
Assets内のScenesフォルダを開く．
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/011a21e5-9ba2-5997-2397-72924ab5b8ed.png)

①プロジェクトタブ上で右クリックし，②Sceneを新規作成する．
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/fa02a37d-2191-87a1-ac5c-0f3420d654dd.png)

適当な名前をつける．（今回は1としている）
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/83afa045-3bc6-dde6-4b2d-ae8cd02de6e9.png)

各シーンをダブルクリックして切り替えられる．左上のプロジェクト名の右側が開いてるシーン名になっている．
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/09ac308a-b61f-461a-1539-ec0b4f3cef6c.png)

シーンを作成するとデフォルトでメインカメラが設置されているので右クリックして削除する．
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/b620c862-7555-6d00-87e6-311a9ac3f426.png)

SteamVR/Prefabsフォルダ内にある[CameraRig]をオブジェクトを置くヒストリータブにドラック＆ドロップする．
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/f7ec14ae-51bc-1289-4d4e-212236ad22cd.png)

無事追加されたら中身を確認すると元々左右のコントローラを制御する用のController(Left)とController(right)が入っている．
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/a2b2897d-a41a-ed3e-bbb5-775a23da5a76.png)

実行してみてコントローラが見れれば作成は問題なく終わっている．
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/073cf4a4-35b4-23d4-7f2c-660a29682d38.png)

＊注意
VRは動作が不安定になることが多いのでちょくちょく保存しておくように心がける．
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/21b903da-8b63-9f7f-81b4-6b53c10ba03d.png)

Assetsフォルダ上に戻ってフォルダーを新規作成する．
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/41545576-0011-d889-3951-369624889301.png)

プログラムを書いたスクリプトを保存する用のScriptフォルダを作成する．
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/2315881a-0571-711f-01c0-313d75a6d89a.png)

作成したScriptフォルダを開いて右クリックしてC# Scriptを新規作成する．
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/e9c849b6-f4a5-cf6a-236c-dcabacfd0393.png)

今回はbooleantestという名前のスクリプトを作成する．
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/56981c61-b667-f762-85f2-71f66e514179.png)

スクリプトをダブルクリックするとVisual Studioが開いて中身を編集できる．クラス名はファイル名と同じにする．
ファイル名を変更しても勝手に変わってくれないので変えるたびに確認する．
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/c2c745cc-f4fc-d952-42b1-24c38dd34d04.png)

初期で作られるメソッドとしてStart()とUpdate()が作成されている．
Start()：開始と同時に動くプログラムを書く部分．
Update()：フレーム毎に動くプログラムを書く部分

他には
Awake()：Start()よりも先に呼び出される．
LateUpdate()：Update()と同様に１フレームに１回呼び出されるが，Update()がフレームの最初に実行されるのに対してLateUpdate()はフレームのすべての処理が終わった後に実行される．
FixedUpdate()：ゲーム内時間での一定間隔で呼ばれる，ゲーム内時間を使用する為，フレームレートに依存せずに制御が行える．
などが代表的なメゾット．いろいろ種類があるので適宜使い分ける．
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/d46e38ea-b5f9-49c2-beff-138417deb364.png)

変更した後には保存すると反映されるので開きっぱなしでも大丈夫．
![29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/70576d62-60ec-247a-3246-bb5189642a10.png)

作成したアセットをController(Left)に追加する．
追加されるとインスペクターの一番下に表示される．
![16.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/10aa99c5-d5b0-b07a-f933-56e7ed9026f3.gif)

#2．コントローラとUnityの接続設定を行う．

コントローラの値を取得する為に初期設定を行う．
WindowからSteamVR Inputを開く．
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/2532e4d4-a3a6-bebc-32ca-70194c399231.png)

元々ボタン系のアクションは基本用意されている．
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/a396c252-f9cb-ca63-fec1-1735d4c2b9ac.png)

アクションはとりあえず触らずにコントローラのバインド設定を開く．
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/72c17561-1415-74ad-2254-77b3135ed3c7.png)

開いた際に「Steamを利用できません．一部の機能が無効な可能性があります．」と表示される場合がある．この場合設定を追加できないのでSteamを開いてログインしておく．ログインが終わったらSteamは閉じてしまって大丈夫．
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/861da702-5769-186e-17ca-8ff4f9025fbd.png)
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/26a83642-fb6d-d929-01d1-449235ad9e2e.png)

ログインされていれば特に警告は表示されないのでバインドの新規作成をする．
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/bb36aa14-6b82-1045-2401-43d715edf405.png)

コントローラの設定画面が表示される，元々それぞれのボタンにアクションが割り振られている．もし新しいアクションを入れたい場合にはSteamVR Inputでアクションを追加してそれぞれのボタンに割り当てる．（次の記事で詳細記述）
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/7add4fca-8e20-251a-f1ec-812488822bc7.png)
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/af4554e9-9fc2-3b68-651e-a82a234081d6.png)

とりあえず今回はそのままで個人用バインドを保存する．もしログインされてないとこのボタンが灰色になっていて押せない．
![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/4e437ac3-3b78-31a5-d505-f3499a0fb212.png)

名前や説明を変更できるので適宜変更して保存する．
![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/38714324-463d-ecf6-215f-27914b65c631.png)

保存が完了したら左上の戻るボタンを押す．
![26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/712ae20a-1584-4d12-3ed4-d502a9e84d1f.png)

自身のアイコンが表示された個人用バインドが作成されてれば大丈夫．
![27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/f421531a-bdd0-d8aa-a99d-1fc5583e1ea3.png)

#3．トリガーの入力をフロートで取得する．

WindowからSteamVR Inputを開く．
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/2532e4d4-a3a6-bebc-32ca-70194c399231.png)

アクションの初期状態にはトリガーが元々Squezeとしてあるが今回は実際に作成して割り当ててみる．
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/e12ef64a-38bc-ab5d-03f4-4f077c055c7e.png)

コントローラのバインドセットを見るとアクション内にあるものしか割り当てられないことが分かる．
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/89ed4d75-33a7-4d51-b93e-33c3b6d176d4.png)

そのため，右下の+ボタンからアクションの追加を行う．
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/993ad02e-c4f5-095f-5afc-095249920535.png)

今回はTriggerPullという名前のVector1型（フロート型1つ）の入力を取得する．Requiredはそのアクションが必須かどうかを設定する．必須に設定するとコントローラのバインド設定画面で割り当てられて無いアクションがあると警告が出るようになるが無視できるので好みで設定．
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/21e377fe-b005-c583-8b89-fdf23a63b4cd.png)

設定を変更したら保存を行う．
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/9761360e-2e07-51e0-2c54-8c0860d0039a.png)

ポップアップが出るのでSaveする．
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/b2f69aab-3347-2d56-c5d7-ff72337b1296.png)

先ほど作ったコントローラの個人バインドを開いてトリガーの設定を削除する．間違って設定して訳が分からなくなっても新規作成すればデフォルトの設定が復活するので消しちゃいます．
一つのボタンに競合する内容でなければ複数個のアクションを割り当てることが出来ます．初期ではトリガーに3個設定が入っています．（弱く推したか，強く推したか，どのぐらい押し込まれているかの3つ）
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/73a91612-14fe-3443-16de-f6c38127f941.png)

すべて削除したら名前の横にある+ボタンからアクションを追加します．
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/9344044b-31e0-d684-c8fb-dfe2838f602e.png)

今回はトリガーをトリガーとして（混乱しそう）設定します．
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/daf4b98f-2a06-4d99-8e47-a191c5b29c60.png)

トリガーが割り当てられるのでまずはクリックの入力を割り当てます．
![9-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/607fcdfd-ca1b-a444-0819-49827b86c34f.png)

今回は元々割り当てられていたIntaract With UIを割り当てます．この入力を得たい場合は[前回](https://qiita.com/RyoyaHase/items/89ffc9d134b784b8ae50)の記事を読んでください．
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/1f4d7138-6cc6-e890-86be-f8d81550bd52.png)

次に今回の主題の一つであるプルの動作を追加します．
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/0fee1e56-3c9b-b614-7607-af6a7fbf93fb.png)

今回新しく作成したtriggerpullを割り当てます．
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/80c07bcd-b716-2be1-7bc1-08da2761fd54.png)

次に上述と同じ手順で「TrigerPull」という名前のC#スクリプトを作成してコントローラか[CameraRig]に割り当てておきます．

```C#:TrigerPull.cs
using System;
using UnityEngine;
using Valve.VR;

//クラス名はファイル名（今回はTrigerPull）
public class TrigerPull : MonoBehaviour
{

    //トリガーがどれだけ押されているのかを取得するためのtriggerpullという関数にSteamVR_Actions.default_TriggerPullを固定
    private SteamVR_Action_Single triggerpull = SteamVR_Actions.default_TriggerPull;
    //結果の格納用floot型関数
    private float pullleft, pullright;

    //1フレーム毎に呼び出されるUpdateメゾット
    void Update()
    {
        //結果をGetLastAxisで取得してpullleftに格納
        //SteamVR_Input_Sources.機器名（ここは左コントローラ）
        pullleft = triggerpull.GetLastAxis(SteamVR_Input_Sources.LeftHand);
        //pullleftの中身を確認
        Debug.Log("Left:" + pullleft);

        //結果をGetLastAxisで取得してpullrightに格納
        //SteamVR_Input_Sources.機器名（ここは右コントローラ）
        pullright = triggerpull.GetLastAxis(SteamVR_Input_Sources.RightHand);
        //pullrightの中身を確認
        Debug.Log("Right:" + pullright);
    }
}
```

問題なくアクションが設定されていればトリガーの押し具合を0-1の値で取得することが出来ます．
![12.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/4cd6e3d5-a36a-3420-8e0c-c0424926a011.gif)

#4．トラックパッドの入力を二次元座標で取得する．

先ほど同様にアクションを追加していく．
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/2b4bc871-874b-e256-65cf-8cbc00766a68.png)

今回はTrackPadという名前のVector2型（フロート型2つ）の入力を取得する．
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/8c398b9d-095b-f892-0679-1e8bc30bf814.png)

コントローラのバインド設定を開くと元々十字キーが割り当てられている（他のコントローラーにはトラックパッドがないため？）なので一度削除してしまう．
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/9054a3a9-232e-74d9-17bb-157b23b85c32.png)

トラックパッドの横にある+ボタンからトラックパッドを割り当てる．
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/3bb18efb-0cdc-8b33-54e1-3d9bf02e9139.png)

まずはクリック動作を割り振る．
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/9efa1b75-2ed9-9449-9972-172cb55657ac.png)

元々割り当てられていたTeleportを割り振る．この入力を得たい場合は[前回](https://qiita.com/RyoyaHase/items/89ffc9d134b784b8ae50)の記事を読んでください．
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/6774e559-e45b-d7c4-ca45-d07c9ecb30b7.png)

タッチ操作は今回は飛ばします（割り振っても大丈夫だけど丁度いいアクションがデフォルトになかったので欲しければ作ってください）．
次に位置を割り当てる．
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/b9112be0-8f42-71df-262e-0a04cd702db1.png)

先ほど作ったベクター2アクションであるtrackpadを割り当てます．
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/ebded2e3-0928-c8ac-41e9-5ea7ea00a2b1.png)

アクションがバインドされてないと警告が出ますが，今回は使わないので無視します．アクションを追加する際の必須の設定はこの表示を出すためのやつです（無視できていいのか．．．？）．
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/3e3bd78c-7da3-f9ca-31ed-6afe0d32ef57.png)


次に上述と同じ手順で「Trackpad」という名前のC#スクリプトを作成してコントローラか[CameraRig]に割り当てておきます．
問題なく割り当てられていれば，トラックパッド上のどこを触っているのかを二次元座標で得ることが出来ます．~~エロゲーで使えそう．~~

```C#:Trackpad.cs
using System;
using UnityEngine;
using Valve.VR;

//クラス名はファイル名（今回はTrackpad）
public class Trackpad : MonoBehaviour
{

    //パッドのどこを触っているのかを取得するためのTrackPadという関数にSteamVR_Actions.default_TrackPadを固定
    private SteamVR_Action_Vector2 TrackPad = SteamVR_Actions.default_TrackPad;
    //結果の格納用Vector2型関数
    private Vector2 posleft, posright;

    //1フレーム毎に呼び出されるUpdateメゾット
    void Update()
    {

        //結果をGetLastAxisで取得してposleftに格納
        //SteamVR_Input_Sources.機器名（ここは左コントローラ）
        posleft = TrackPad.GetLastAxis(SteamVR_Input_Sources.LeftHand);
        //posleftの中身を確認
        Debug.Log(posleft.x + " " + posleft.y);

        //結果をGetLastAxisで取得してposrightに格納
        //SteamVR_Input_Sources.機器名（ここは右コントローラ）
        posright = TrackPad.GetLastAxis(SteamVR_Input_Sources.RightHand);
        //posleftの中身を確認
        Debug.Log(posright.x + " " + posright.y);
        
    }
}
```

![21.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/6e7e0858-8d03-d146-bae8-0892cf1aefe9.gif)

今回は機能の説明のためにいろいろと追加しましたが　[#6-おまけ「VIVEコントローラを使った開発をする時のおすすめ設定（独断と偏見）」](https://qiita.com/RyoyaHase/items/d622e1bb0e345cf78f4f)ですべての機能を使うためのおすすめ設定について書いています．
[次回](https://qiita.com/RyoyaHase/items/325e7250c01f47e7e63b)はコントローラやHMDの位置と回転を取得します．