我想举一个射击的例子, 然后我在句柄按钮事件中写了这个,
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);
,
错误是:
对象引用未设置为对象的实例。
答案 0 :(得分:0)
首先您需要确认您的 fire 脚本已附加到您的控制器对象,并且您的控制器对象还附加了 SteamVR_TrackedObject 脚本(由steam插件提供)。 然后,最后确保此行正在执行
void start() {
trackedObj = GetComponent<SteamVR_TrakedObject>();
}