Oculus Quest コントローラーの入力をUE4 Blueprint で受け取る

#はじめに
Oculus公式ページにある [Mapping Oculus Controller Input to Blueprint Events](https://developer.oculus.com/documentation/quest/latest/concepts/unreal-controller-input-mapping-reference/) をもとにした内容です。公式ページには書かれていないサムスティック、トリガー、グリップの浮動小数点値の取得についての内容を追記しています

ボタン押したかどうかだけではなく「ボタンに触れているかどうか」「指がボタンからどれぐらい離れているか」など色々な情報が取れます。~~公式ページでも難しい英語ではないので分かるんだけど、~~（日本語のページができていました！！）似たような名前で多くの機能があり混乱しかけたのでまとめました。

左コントローラーの例で書いていますが右コントローラーも(L)(左)が(R)(右)になるだけでほぼ同じです。

#確認した環境
UnrealEngine 4.22.3　VRテンプレートのMotionControllerMapを使用
Oculus Quest付属のコントローラー

@shienaさんの記事を参考に ManifestRequirementsAdditions.txt を所定にフォルダに置くという対応をしています。
[Oculus Quest Build 7.0アップデート後に自作アプリがおかしくなった時の対策](https://qiita.com/shiena/items/0b7735a80e7d4358e5fb#ue422%E4%BB%A5%E5%89%8D)

#サムスティック　タッチ、プレス、サムアップアクション
サムスティックの「押し込み」「触れているか」「指がどれぐらい離れているか」を取得できます。

|名前       |説明|
|:-----------------|:------------------|
|MotionController (L) Thumbstick|左コントローラのサムスティックのPressedおよびReleasedイベント。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/d09c1f40-e6b3-0c90-ab60-b721bffdcdd6.png)|
|Oculus Touch (L) Thumbstick CapTouch|左コントローラーのサムスティック静電容量式タッチイベント。 Axis Valueは、ユーザーがサムスティックに触れている場合は1を返し、そうでない場合は0を返します。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/7b50a368-7e96-bda1-a562-736acbf9ce14.png)|
|Oculus Touch (L) Thumb Up CapTouch|左コントローラーのサムスティック静電容量式タッチイベント。 Axis Valueは、**ユーザーの親指がサムスティックからどれだけ離れているか**を表す0.0から1.0の浮動小数点値を返します。0.0は可能な限り近く、1.0は測定可能範囲より離れています。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/cfd85a37-7cdf-54de-6904-d3ab757c9a7d.png)|

#サムスティック 上下左右　プレス、リリースアクション
サムスティックの「上下左右に倒す」アクションを取得できます。これでとれるのはデジタル値です

|名前       |説明|
|:-----------------|:------------------|
|MotionController (L) Thumbstick Up|左側のコントローラーのサムスティック上のPressedおよびReleasedイベント。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/e8d1af19-c926-41a3-b9ff-962696982a2b.png)|
|MotionController (L) Thumbstick Down|左側のコントローラーのサムスティック下のPressedおよびReleasedイベント。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/3d3589e2-2c45-1fc2-7c95-d5b0d6d60006.png)|
|MotionController (L) Thumbstick Left|左側のコントローラーのサムスティック左のPressedおよびReleasedイベント。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/00c23ba0-bb41-67b5-9782-81ef01261295.png)|
|MotionController (L) Thumbstick Right|左側のコントローラーのサムスティック右のPressedおよびReleasedイベント。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/f828aead-e517-358b-b8c3-236b881496ab.png)|

サムスティックの倒し具合を-1.0から+1.0の浮動小数点値で取得できます。（公式ページには書かれていませんでした）

|名前       |説明|
|:-----------------|:------------------|
|MotionController (L) Thumbstick X|サムスティックの左右(X軸)の倒し具合を-1.0から+1.0の浮動小数点値で取得。<BR>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/3b5bb0a2-e3ad-6773-91f0-edb837bcbe06.png)|
|MotionController (L) Thumbstick Y|サムスティックの上下(Y軸)の倒し具合を-1.0から+1.0の浮動小数点値で取得。<BR>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/73c691d0-e04b-de78-532e-b783171f7ead.png)|

#トリガー　タッチ、プレス、リリース、およびポインティングフィンガーアクション
トリガーの「押す（引く？）」「触れているか」「指がどれぐらい離れているか」を取得できます。

|名前       |説明|
|:-----------------|:------------------|
|MotionController (L) Trigger|左コントローラーのトリガーの、PressedおよびReleasedイベント。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/4d262cce-3cd7-dd6c-e1c1-d9ca6fa0f7c7.png)|
|Oculus Touch (L) Trigger CapTouch|左コントローラーのトリガーの静電容量式タッチイベント。 Axis Valueは、ユーザーがトリガーに触れている場合は1を返し、そうでない場合は0を返します。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/b1f7fa11-5577-2ef0-c729-91c7fbf75438.png)|
|Oculus Touch (L) Pointing CapTouch|左コントローラーのトリガーの静電容量式タッチイベント。Axis Valueは、**ユーザーの指がトリガーからどれだけ離れているか**を表す0.0から1.0の浮動小数点値を返します。0.0は可能な限り近く、1.0は測定可能範囲より離れています。<BR>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/e363afd7-23b5-ba5e-46c3-ba904f063b9b.png)|

トリガーの引き具合を0.0から1.0の浮動小数点値でとれます。（公式ページには書かれていませんでした）

|名前       |説明|
|:-----------------|:------------------|
|MotionController (L) Trigger Axis|左コントローラーのトリガーの引き具合を0.0から1.0の浮動小数点値で返します。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/52e3cc46-c178-6e47-60cb-561525f8ea84.png)|

#グリップ　プレス、リリースアクション
グリップボタンを「押す」アクションを取得できます。

|名前       |説明|
|:-----------------|:------------------|
|MotionController (L) Grip1|左コントローラのグリップのPressedおよびReleasedイベント。<BR>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/0b6da800-8288-2f03-729c-f2f99c27f2dd.png)|

グリップの押し具合を0.0から1.0の浮動小数点値でとれます。（公式ページには書かれていませんでした）

|名前       |説明|
|:-----------------|:------------------|
|MotionController (L) Grip1 Axis|左コントローラーのグリップの押し具合を0.0から1.0の浮動小数点値で返します。<BR>!![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/80949327-036f-0170-3050-d7cd692fba9f.png)|

#X, A, Y, Bボタン　プレス、リリースアクション
X, A, Y, Bボタンを「押す」「触れているか」を取得できます。

|名前       |説明|
|:-----------------|:------------------|
|MotionController (L) FaceButton1|左コントローラーのXボタンのPressedおよびReleasedイベント。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/542a961d-d22a-84cb-20a9-05781fce14bd.png)|
|Oculus Touch (L) X Button CapTouch|左コントローラーのXボタン静電容量式タッチイベント。 Axis Valueは、ユーザーがXボタンに触れている場合は1を返し、そうでない場合は0を返します。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/cf979f6b-599e-de5b-2d4f-9fbb85043c3b.png)
|MotionController (L) FaceButton2|左側のコントローラーのYボタンのPressedおよびReleasedイベント。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/89e1baba-60cc-29ec-277d-d6262b190ff8.png)|
|Oculus Touch (L) Y Button CapTouch|左コントローラーのYボタン静電容量式タッチイベント。 Axis Valueは、ユーザーがYボタンにタッチしている場合は1を返し、そうでない場合は0を返します。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433170/8c9951e7-4ede-dfed-7780-dc14f930c1ab.png)|

#参考リンク
[Mapping Oculus Controller Input to Blueprint Events](https://developer.oculus.com/documentation/quest/latest/concepts/unreal-controller-input-mapping-reference/)
[Oculus Quest Build 7.0アップデート後に自作アプリがおかしくなった時の対策](https://qiita.com/shiena/items/0b7735a80e7d4358e5fb)