yotiky Tech Blog

とあるエンジニアの備忘録

Unity (Oculus Quest) - SteamVR Plugin でタッチしてボタン入力(uGUI)

目次

開発環境

  • Quest1
  • Oculus Link + SteamVR
  • Unity 2021.2.0b16.3733
  • Unity 2020.3.17f1
  • SteamVR Plugin 2.7.3

前提

Playerプレハブを使うので前回の記事で準備ができていること。

yotiky.hatenablog.com

実装

  • Canvasを追加する
    • World Spaceに変更して VRCameraを設定
    • ちょっと楽に設定する方法が参考サイトに書かれてた
    • f:id:yotiky:20211020235043p:plain
  • Buttonを追加
    • Interactableを追加
    • UI Elementを追加してクリック時の処理を設定
    • f:id:yotiky:20211020235121p:plain
  • Buttonの中にCubeを追加して、MeshRendererを無効にしてBoxCollider見ながらサイズを調整する

    • CubeがRect Transformになってるので一度RemoveするとTransformになる
    • f:id:yotiky:20211020235145p:plain
  • ボタンに触れてトリガーを押すとクリックできる

    • f:id:yotiky:20211020235340g:plain
    • ボタンはNormal→Pressed→Selectedの順に変化する
    • f:id:yotiky:20211020235234p:plain
    • f:id:yotiky:20211020235418g:plain
  • Colliderで判定するため、手のモデルが当たったオブジェクトが反応するので注意
    • 縦に2つ並んだボタンの間に手を入れてトリガー引くと両方当たるなど
  • 触れてるボタンをハイライトさせるには、Buttonに次のスクリプトをもたせる
private Button button;

public void Start()
{
    button = GetComponent<Button>();
}

void OnHandHoverBegin(Hand hand)
{
    button.Select();
}

void OnHandHoverEnd(Hand hand)
{
    EventSystem.current.SetSelectedGameObject(null);
}
  • Toggleも同じ手順で実装可能

参考