繁体   English   中英

在Unity5中使用OVRInput触摸控制器Raycast进行纹理注释

[英]Texture Annotation using OVRInput Touch Controller Raycast in Unity5

EDIT2:

感谢Draco在评论LineRendererLineRendererLineRenderer类。

这里是一个脚本的链接,该脚本帮助我在游戏世界中绘制了线条: http : //answers.unity3d.com/questions/1142318/making-raycast-line-visibld.html

编辑:

我在Debug.DrawRay方法中将单位长度从1更改为100,000,从黑色更改为蓝色,现在我只能看到在场景视图中绘制的光线。

Debug.DrawRay(transform.position, transform.forward, Color.blue, 100000);

另外,现在我可以通过将以下脚本应用于游戏对象LocalAvatar > controller_right来跟踪触摸控制器的光线。

原始帖子

我正在尝试使用Unity 5.6.1和Visual Studio C#中的Oculus VR包OVRAvatarOVRCameraRigOVRInput来做看似简单的事情。

目标: 我想从Oculus触摸控制器的手指获得光线投射,并截取一个平面以将像素应用于该平面的纹理。

我能够使用OVRCameraRig来获取相机的OVRCameraRig以拦截飞机, OVRCameraRig所示:

void Update() {
    RaycastHit hit;
    Vector3 fwd = ovrCamera.transform.TransformDirection(Vector3.forward);

    if (Physics.Raycast(ovrCamera.transform.position, fwd, out hit, 10000))
    {
        if (hit.collider.tag == "Plane"))
        {
            print("Hit the plane!");
            // apply some pixels to plane texture
            // setPixels(plane.texture)
        }
    }

 // EDIT: I changed the unit length from 1 to 100,000 and now I am able to see the rays drawn in the scene view only.
 // NOTE: this line below does not work in Unity's scene view or game view
 Debug.DrawRay(ovrCamera.transform.position, ovrCamera.transform.forward, Color.black, 1);
}

除了Debug.DrawRay函数不起作用之外,检查OVRcamera的射线投射是否击中飞机的代码实际上也可以工作。

但是,现在我正在尝试测试OVRInput.Controller.RTouch的射线投射,因此我看不到绘制的射线,并且未触发碰撞对撞机检查。

我已将此脚本作为以下组件添加到OVRCameraRig's RightHandAnchor

void Update() {
    RaycastHit hit;
    Vector3 fwd = transform.TransformDirection(Vector3.forward);

    if (Physics.Raycast(transform.position, fwd, out hit, 10000))
    {
        if (hit.collider.tag == "Plane")
        {
            print("Hit plane with touch controller's raycast!");
        }
    }
  // EDIT: I changed the unit length from 1 to 100,000 and now I am able to see the rays drawn in the scene view only.
  // NOTE: this line below does not work in Unity's scene view or game view
 Debug.DrawRay(transform.position, transform.forward, Color.black, 1);
}

不用说, Debug.DrawRay函数在这里也不起作用。 我无法确定触摸控制器发出的光线是否真正被跟踪。

任何帮助或见解表示赞赏,谢谢!

感谢Draco在评论中将我引到LineRenderer类。

这里是一个脚本的链接,该脚本帮助我在游戏世界中绘制了线条: http : //answers.unity3d.com/questions/1142318/making-raycast-line-visibld.html

我在Debug.DrawRay方法中将单位长度从1更改为100,000,从黑色更改为蓝色,现在我只能看到在场景视图中绘制的光线。

Debug.DrawRay(transform.position, transform.forward, Color.blue, 100000);

另外,现在我可以通过将以下脚本应用于游戏对象LocalAvatar> controller_right来跟踪触摸控制器的光线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM