Pokeって呼ばれる、ハンドトラッキングのハンドで直接UIとかを押すやつを実装する。
Quad
Meta公式のBuilding Block内にPokeというのはあるが、これはQuadを使っている。
uGUIが慣れ親しんでてよかったけどエフェクトとかも付けれるしQuadでやったほうがいいのかな?
MovementSampleにもPokeでUI切り替えれるものあったけど、中身見たら結構複雑
使う
BuildingBlockのPokeableItemを使って実装してみる
デザイン変更
押したときの色の変化はここ
3DのTextMeshProをVisualの下に置く
大きさはButtonVisualで変えれたけど、実行したら元の大きさに戻った・・・
ButtonVisualについているRoundedBoxPropartyの値を変えないといけなかった。ここで角丸にもできる!親のVisualsの値を0.03ぐらい小さくして、子の数字を扱いやすくした
こちらの記事が詳しい
イベント
Block内のPokeを押したときのイベントはInteractableUnityEventWrapperというのを使えばいい。多分デフォルトはではついてなさそうだったのでつけた
これでできた
uGUI
uGUIで同じ方がやっていることにあとで気づいた
ドキュメント
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は使えないのかな~?次はそれをやってみよう