问题描述
我一遍又一遍地搜索,但找不到任何有效的答案,任何似乎相关的答案都适用于 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 ");
}
}
}
}
}
如果行为是您需要的,您可以检查光线颜色和控制台中的日志。