前提・実現したいこと
Unityで3Dの人型モデルの指動きを、HTC VIVEのコントローラーの
トラックパッドで入力できるようにしたいです。
SteamVR plugin v2以降です。
Unityのビュー(再生)では問題なく動作が確認できるのですが、
ビルドすると指のみ動きません。
指の動作にあたるプログラム周辺でエラーが起こっているで、それが原因だろうというのはわかるのですが、
どのように対処すればよいかわかりません。
発生している問題・エラーメッセージ
NullReferenceException:Object reference not set to an instance of an object
Valve.VR.SteamVR_Actions.get_default_Trackpad()(at Asset/SteamVR_Imput/SteamVR_Imput_Actions.cs:132)
該当のソースコード
エラーメッセージが指しているのが132行目なのでかなり長くなります。
1つめのソースコードの一番下がエラー箇所です。
指の動作のプログラムも関わっていそうなので記載します。
(SteamVR_Actions.default_TrackPad ← これが怪しいのかしらと素人ながら思っています。
ただ、これをどうすればいいのかわかりません…)
namespace Valve.VR { using System; using UnityEngine; public partial class SteamVR_Actions { private static SteamVR_Action_Boolean p_default_InteractUI; private static SteamVR_Action_Boolean p_default_Teleport; private static SteamVR_Action_Boolean p_default_GrabPinch; private static SteamVR_Action_Boolean p_default_GrabGrip; private static SteamVR_Action_Pose p_default_Pose; private static SteamVR_Action_Skeleton p_default_SkeletonLeftHand; private static SteamVR_Action_Skeleton p_default_SkeletonRightHand; private static SteamVR_Action_Single p_default_Squeeze; private static SteamVR_Action_Boolean p_default_HeadsetOnHead; private static SteamVR_Action_Vector2 p_default_TrackPad; private static SteamVR_Action_Vibration p_default_Haptic; private static SteamVR_Action_Vector2 p_platformer_Move; private static SteamVR_Action_Boolean p_platformer_Jump; private static SteamVR_Action_Vector2 p_buggy_Steering; private static SteamVR_Action_Single p_buggy_Throttle; private static SteamVR_Action_Boolean p_buggy_Brake; private static SteamVR_Action_Boolean p_buggy_Reset; private static SteamVR_Action_Pose p_mixedreality_ExternalCamera; public static SteamVR_Action_Boolean default_InteractUI { get { return SteamVR_Actions.p_default_InteractUI.GetCopy<SteamVR_Action_Boolean>(); } } public static SteamVR_Action_Boolean default_Teleport { get { return SteamVR_Actions.p_default_Teleport.GetCopy<SteamVR_Action_Boolean>(); } } public static SteamVR_Action_Boolean default_GrabPinch { get { return SteamVR_Actions.p_default_GrabPinch.GetCopy<SteamVR_Action_Boolean>(); } } public static SteamVR_Action_Boolean default_GrabGrip { get { return SteamVR_Actions.p_default_GrabGrip.GetCopy<SteamVR_Action_Boolean>(); } } public static SteamVR_Action_Pose default_Pose { get { return SteamVR_Actions.p_default_Pose.GetCopy<SteamVR_Action_Pose>(); } } public static SteamVR_Action_Skeleton default_SkeletonLeftHand { get { return SteamVR_Actions.p_default_SkeletonLeftHand.GetCopy<SteamVR_Action_Skeleton>(); } } public static SteamVR_Action_Skeleton default_SkeletonRightHand { get { return SteamVR_Actions.p_default_SkeletonRightHand.GetCopy<SteamVR_Action_Skeleton>(); } } public static SteamVR_Action_Single default_Squeeze { get { return SteamVR_Actions.p_default_Squeeze.GetCopy<SteamVR_Action_Single>(); } } public static SteamVR_Action_Boolean default_HeadsetOnHead { get { return SteamVR_Actions.p_default_HeadsetOnHead.GetCopy<SteamVR_Action_Boolean>(); } } public static SteamVR_Action_Vector2 default_TrackPad { get { //↓ここがエラー箇所 return SteamVR_Actions.p_default_TrackPad.GetCopy<SteamVR_Action_Vector2>(); } }
指を動かすために作っているプログラム(一部)はこちらです。
using System.Collections; using System.Collections.Generic; using VrmArPlayer; using UnityEngine; using Valve.VR; public class TrackpadControl : MonoBehaviour { private SteamVR_Action_Vector2 TrackPad = SteamVR_Actions.default_TrackPad; private Vector2 pos, pos2; // Start is called before the first frame update void Start() { var fingerController = gameObject.AddComponent<FingerController>(); } // Update is called once per frame void Update() { var fingerController = gameObject.AddComponent<FingerController>(); pos = TrackPad.GetLastAxis(SteamVR_Input_Sources.RightHand); pos2 = TrackPad.GetLastAxis(SteamVR_Input_Sources.LeftHand); Debug.Log(pos.x + " " + pos.y); //以下に指の関節の指定が続く
試したこと
エラーメッセージに記載があったプログラムのnullを探してみたのですが見つからず…
プログラム初心者のため見落としや理解不足があるかもしれません。
コントローラーのバインド設定なども確認しました。
補足情報(FW/ツールのバージョンなど)
unity 2019 2.2f
SteamVR 1.7.15
SteamVR Plugin 2.3.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/26 01:13