【发布时间】:2015-07-24 12:57:15
【问题描述】:
我想使用 Oculus Rift 在 Unity3D 游戏引擎中测量两点之间的距离。用户通过查看点 A,按键盘上的 alpha1 和 B,按键盘上的 alpha2 来定位这些点。我已经走到这一步了:
#pragma strict
private var measuring = false;
private var startPoint : Vector3;
private var dist;
function Update() {
var hit : RaycastHit;
if (Input.GetKeyDown(KeyCode.Alpha1)) {
dist = 0.0f;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), hit)) {
// if (Physics.Raycast(transform.position, transform.forward, hit, 10)) {
measuring = true;
startPoint = hit.point;
}
}
if (measuring && Input.GetKeyDown(KeyCode.Alpha2)) {
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), hit)) {
// if (Physics.Raycast(transform.position, transform.forward, hit, 10)) {
dist = Vector3.Distance(startPoint, hit.point);
}
}
}
function OnGUI() {
if (measuring) {
GUI.Label(Rect(50,50,180,50), "Distance: " + dist.ToString());
}
}
我的问题是,此代码仅适用于标准主相机对象,但我想使用 Oculus 集成的 OVRCameraRig。我收到以下异常消息:
NullReferenceException:对象引用未设置为对象的实例 MeasureInGame.Update () (在 Assets/MeasureInGame.js:11)
我在这个网站上找到了一个解决方案:https://kaharri.com/unity-gaming-shootingaiming-part3-oculus/我创建了一个 ShotSpawner 对象作为 OVRCameraRig 的子对象(这应该像镜头前的枪一样)并将 Raycast 更改为
Physics.Raycast(transform.position, transform.forward, hit, 10)
获取用户视图。但它似乎也不起作用。
如何使用 Oculus 主摄像头完成瞄准。我严格需要在要测量的对象上安装对撞机是否正确,或者是否有没有对撞机的解决方案?
问候
【问题讨论】:
标签: unity3d raycasting measure oculus