将光线从相机绘制到鼠标 Unity 3D?

问题描述

我一遍又一遍地搜索,但找不到任何有效的答案,任何似乎相关的答案都适用于 2D。

我已经把它归结为我可以测试的最基本的代码,这是除了脚本模板中的内容之外的唯一代码

void Update()

{

 Debug.DrawRay(Camera.main.ScreenToWorldPoint(Input.mousePosition),Vector3.down * 10,Color.red,10);

}

这只会从相机直接向下创建光线(自上而下显示),但不会在鼠标位置创建。我该怎么做?

如果删除 Camera.main.ScreenToWorldPoint 并只放入 Input.mousePosition,Ray 将很好地跟随鼠标的位置,只是它不会处于世界位置(缩小以查看)。>

解决方法

你可以看看这个:

public class click : MonoBehaviour {
    void Update() {
        if (Input.GetMouseButtonDown(0)) {
            Debug.Log("good 1");
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            Debug.DrawRay(ray.origin,ray.direction * 20,Color.white);
            if (Physics.Raycast(ray,out hit)){
                if (hit.collider != null) {
                    Debug.Log("good 2");
                }
                else {
                    Debug.Log("bad ");
                }
            }
        }
    }
}

如果行为是您需要的,您可以检查光线颜色和控制台中的日志。