トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

QuestのハンドトラッキングでUI入力【Poke】

Pokeって呼ばれる、ハンドトラッキングのハンドで直接UIとかを押すやつを実装する。

Quad

Meta公式のBuilding Block内にPokeというのはあるが、これはQuadを使っている。

bibinbaleo.hatenablog.com

uGUIが慣れ親しんでてよかったけどエフェクトとかも付けれるしQuadでやったほうがいいのかな?

 

MovementSampleにもPokeでUI切り替えれるものあったけど、中身見たら結構複雑

使う

BuildingBlockのPokeableItemを使って実装してみる

デザイン変更

押したときの色の変化はここ

3DのTextMeshProをVisualの下に置く

大きさはButtonVisualで変えれたけど、実行したら元の大きさに戻った・・・

ButtonVisualについているRoundedBoxPropartyの値を変えないといけなかった。ここで角丸にもできる!親のVisualsの値を0.03ぐらい小さくして、子の数字を扱いやすくした

こちらの記事が詳しい

rhikos-prgm.hatenablog.com

イベント

Block内のPokeを押したときのイベントはInteractableUnityEventWrapperというのを使えばいい。多分デフォルトはではついてなさそうだったのでつけた

qiita.com

これでできた

uGUI

uGUIで同じ方がやっていることにあとで気づいた

rhikos-prgm.hatenablog.com

ドキュメント

https://developer.oculus.com/documentation/unity/unity-isdk-canvas-integration/#PointableCanvas

 

こちらの記事の時とOculusのコンポーネント名が変わっているものがいくつかあった

PointablePlaneはPointableCanvasだと思われる

でもうまく参照できない・・・

BoxProximityFieldもない

うわ~ん

最後に

ハンドトラッキングのUI入力と言えばPoke!と思ったけど、普通にポインターでやったほうがいい気がしてきた。手を大きく動かさなくていいし、Appleもそういってた。

以下のドキュメントにRayでやる方法みたいな項目ある。

https://developer.oculus.com/documentation/unity/unity-isdk-canvas-integration/#PointableCanvas

 

Blocksのサンプルはcube colliderの表面に手から出るRayが反応するというものだった。

ハンドトラッキング独自のRayというより、コントローラーの時に作ったRayは使えないのかな~?次はそれをやってみよう

bibinbaleo.hatenablog.com