【问题标题】:Physics.Raycast not working with Google Cardboard / Google VRPhysics.Raycast 不适用于 Google Cardboard / Google VR
【发布时间】:2019-11-05 22:34:25
【问题描述】:

我有一个物理 Raycaster 连接到相机。指针单击事件触发器工作正常。但是我需要从源代码中做到这一点。这些是我的尝试:

private void SetOnPushButtonFireManager(){
    cardboard.OnTrigger += () => {
        Debug.Log("Button triggered!");
        RaycastHit hit;
        // if(Physics.Raycast(headGameObject.GetComponent<GvrHead>().Gaze, out hit, Mathf.Infinity)){
        if(Physics.Raycast(cameraGameObject.transform.position, cameraGameObject.transform.forward, out hit, Mathf.Infinity)){
              Debug.Log("Collision detected!");
        }
    };
}

“按钮触发了!”显示在控制台中。不幸的是“检测到碰撞!”不是。但是,指针单击事件触发器工作正常(检查器中附加的组件)。我怎么知道发生了什么?为什么它不起作用?

更新:我在这里回答了这个答案:http://answers.unity3d.com/answers/1200449/view.html

(stackoverflow 不允许我删除这个问题)

【问题讨论】:

    标签: unity3d unity5 google-cardboard raycasting google-vr


    【解决方案1】:

    这是我用来从相机发射光线的一些代码。我没有 Google Cardboard,这是为相机和鼠标指针设置的。

       // Fire ray from camera
        float rayLength = 2f
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
    
        // If ray hits object within length
        if (Physics.Raycast(ray, out hit, rayLength))
        {
                Debug.Log("Collision detected!:);
        }
    

    【讨论】:

    • 我想在玩家按下按钮时从相机的中心发射光线。所以我已将您的代码修改为Ray ray = Camera.main.ViewportPointToRay (new Vector3(0.5f,0.5f,0f)); 不幸的是,这不起作用。无论如何,感谢您的帮助! :)
    • 我已经在这里回答了这个问题:answers.unity3d.com/answers/1200449/view.html我关闭了这个问题。
    【解决方案2】:

    它也对我不起作用,最后,我忘记在相机中放置“GvrPointerPhysicsRaycaster”类。 Inspector Image

    添加后,效果很好。

    void Update()
    {
        RaycastHit hit;
    
        if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hit, Mathf.Infinity))
        {
            if (activeSelected == null)
            {
                if (hit.collider.tag == "Plane")
                    activeSelected = Instantiate(mainApp.mainModel.preafabSelect, hit.point, Quaternion.LookRotation(hit.normal));
            } else
            {
                activeSelected.transform.position = hit.point;
                activeSelected.transform.rotation = Quaternion.LookRotation(hit.normal);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      相关资源
      最近更新 更多