2017-09-16 9 views
0

私はSteamVRとVRTKでUnityで銃を作りようとしていますが、コントローラの入力を正しく取得する方法を理解できません。 SteamVR追跡コントローラスクリプトを使用すると、IsMatrixValidエラーが発生し、HMDが壊れてしまいます。私は現在、VRTKコントローラのイベントメソッドを使用しようとしていますが、ビデオを正しく追跡しても、nullとして返され続けます。VRTK_ControllerEvents nullを返す

Screenshot of script location in project

問題のビデオ:https://www.youtube.com/watch?v=escwjnHFce0 (14時17分)

スクリプト問題の:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using EZEffects; 
using VRTK; 


public class GunBehavior : MonoBehaviour { 

public VRTK_ControllerEvents controllerEvents; 

private SteamVR_TrackedObject trackedObj; 


public EffectTracer TracerEffect; 
public Transform muzzleTransform; 

// Use this for initialization 
void Start() { 
    Debug.Log(controllerEvents); 
    if (controllerEvents) 
    { 
     Debug.Log("Hue22"); 
    } 
    else 
    { 
     Debug.Log("workfuck"); 
    } 
} 

// Update is called once per frame 
void Update() { 

    if (controllerEvents.triggerPressed) 
    { 
     ShootWeapon(); 
    } 
} 

void TriggerPressed(object sender, VRTK.ControllerInteractionEventArgs e) 
{ 
    ShootWeapon(); 
} 

void ShootWeapon() 
{ 
    RaycastHit hit = new RaycastHit(); 
    Ray ray = new Ray(muzzleTransform.position, muzzleTransform.forward); 

    TracerEffect.ShowTracerEffect(muzzleTransform.position, muzzleTransform.forward, 250f); 

    if (Physics.Raycast(ray, out hit, 5000f)) 
    { 
     Debug.Log("Hueheuhue"); 
    } 
} 
} 
+0

「retur ning null "が起こっていますか? – Programmer

答えて

0

あなたのスクリップからコードのこれらの3行を削除し、それが

を動作するはずです
void TriggerPressed(object sender, VRTK.ControllerInteractionEventArgs e) 
{ 
    ShootWeapon(); 
}