LoginSignup
5
4

More than 3 years have passed since last update.

UnityでValveIndexコントローラーの指入力を取る

Posted at

UnityでValveIndexコントローラーの指入力を取る方法です

前提条件

  • SteamVRは2.0以降を使用します
  • Action Setsはdefaultを使用します

実行環境

  • Windows10
  • Unity 2019.2.8f1
  • SteamVR Plugin 2.5.0

SteamVR Inputの設定

Asset StoreでSteamVRをimport後、メニューの「Window」タブから「SteamVR Input」を選択します
SaveImage2.png
actions.jsonが無いみたいなことを言われるので、「Yes」を選択します
notexit.png
SteamVR Inputが開けたら、「Save and generate」を選択します
saveandgene.png

スクリプトの作成

InputTest.cs
using UnityEngine;
using Valve.VR;

public class InputTest : MonoBehaviour
{
    // 指の入力
    public SteamVR_Action_Skeleton actionSkeleton;

    void Update()
    {
        Debug.Log(
            "親指:" + actionSkeleton.thumbCurl +
            "人差し指:" + actionSkeleton.indexCurl +
            "中指:"+actionSkeleton.middleCurl +
            "薬指:"+actionSkeleton.ringCurl +
            "小指:"+actionSkeleton.pinkyCurl
            );
    }
}

SteamVR_Action_Skeleton

指の入力アクションの状態を取ってくるためのクラスです

thumbCurl~pinkyCurl

それぞれの指をどれだけ握っているか「0~1.0」のfloat値で表現されます

パラメータ 説明
thumbCurl 親指の握りを表します
親指の値は少し特殊で、以下のような値が入ります
・スティックに指を置いた場合:約0.4
・タッチパッドに指を置いた場合:約0.5
・ボタンに指を置いた場合:約0.8
indexCurl 人差し指の握りを表します
middleCurl 中指の握りを表します
ringCurl 薬指の握りを表します
pinkyCurl 小指の握りを表します

実行の準備

Main Cameraを削除して[CameraRig]をHierarchyに追加します
scene.png
適当にGameObjectを作成して先ほど作成したスクリプト「InputTest.cs」をアタッチします
inspectorから指の入力を取得する手を選択します
今回は左手の指入力を取得するので「\action\default\in\SkeletonLeftHand」を選択します
ins.png

実行

ゲームを再生して左手のValveIndexコントローラーを握ると、デバッグログの値が変化します
input.png

参考サイト

Class SteamVR_Action_Skeleton

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4