0

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

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

void Update()

{

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

}

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

如果您删除Camera.main.ScreenToWorldPoint并仅放置Input.mousePosition,则射线将很好地跟随鼠标的位置,除了它不会处于世界位置(缩小以查看它)。

4

1 回答 1

0

你可以看看这个:

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 ");
                }
            }
        }
    }
}

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

于 2021-06-18T10:42:51.963 回答