在VR开发中,我该如何进行手柄拍摄?

时间:2017-02-25 06:22:05

标签: unity3d steam htc-vive

我想举一个射击的例子, 然后我在句柄按钮事件中写了这个,

using UnityEngine;
using System.Collections;

public class fire : MonoBehaviour {
public GameObject bullet;

SteamVR_TrackedObject trackedObj;
void start() {
    trackedObj = GetComponent<SteamVR_TrakedObject>();
}
void Update() {
    var device = SteamVR_Controller.Input((int)trackedObj.index);
    if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger)) {
        GameObejct obj = Instantiate(bullet,transform.position);
        Vector3d fwd = transform.TransformDirection(Vector3.forward);
        obj.GetComponent.<Rigidbody>().AddForce(fwd*2800);
    }
}
}

但是在调试时我按下手柄按钮,它没有产生子弹,并且在线路上出错了 var device = SteamVR_Controller.Input((int)trackedObj.index);, 错误是:

  

对象引用未设置为对象的实例。

1 个答案:

答案 0 :(得分:0)

首先您需要确认您的 fire 脚本已附加到您的控制器对象,并且您的控制器对象还附加了 SteamVR_TrackedObject 脚本(由steam插件提供)。 然后,最后确保此行正在执行

void start() {
    trackedObj = GetComponent<SteamVR_TrakedObject>();
}