1. Qiita
  2. 投稿
  3. Unity

UnityでOculus Touchのhandを非表示・表示を制御する

  • 2
    いいね
  • 0
    コメント
に投稿

Oculus Touchが届いてからほぼ1か月がたち、試しにVRを弄ろうかなとUnityを始めてみました。

とりあえずやっぱり銃を撃ってみる動きを作ってみようとしたところ、Touchを使って握ると、
手が変な感じです。

hand_hen.png

GOROmanさんのVR におけるプレゼンスの維持と破壊によると、

物を掴んだ時は手の表示を消してしまうテクニック(Job Simulator)

という方法があるそうです。

これだ!
というわけで、手を消す方法を調べてみました。

OVRAvatarHandには、SetAlphaというメソッドがありましたので、これに0fを設定してみたところ、ダメでした。
OVRAvatarにShowRightControllerというメソッドがあったので試したところ、これはTouchのコントローラー自体を表示するもので、手とは関係ありませんでした。
Oculus.AvatarのCAPIを見てみましたが、該当しそうなメソッドは見つけられず……。

そんな時、凹さんの Oculus Avatar SDK を使って自分のアバターを Unity で利用する方法を調べてみたを読んでいたところ、実行中のAvatarは、コンポーネントを持つそうです。

2017-01-11 (8).png

なるほど!
そんなわけで、以下のような方法で実装しました。

HandController.cs
public class HandController : MonoBehaviour {
    public OvrAvatarHand hand;
    void Update () {
        SkinnedMeshRenderer mesh = hand.transform.GetComponentInChildren<SkinnedMeshRenderer>();
        mesh.enabled = false;
    }
}

これで手を消せました。