我搜索了一遍又一遍,找不到任何有效的答案,任何似乎相关的答案都适用于2D。
我已经把它归结为我能测试的最基本的代码,这是除了脚本模板中的代码之外的唯一代码:
void Update()
{
Debug.DrawRay(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector3.down * 10, Color.red, 10);
}
这只会直接从摄影机向下创建光线(自上而下显示(,但不会在鼠标位置创建光线。我该怎么做?
如果移除Camera.main.ScreenToWorldPoint
并只放置Input.mousePosition
,则光线将很好地跟随鼠标的位置,只是它不会处于世界位置(缩小以查看它(。
您可以查看:
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 ");
}
}
}
}
}
您可以在控制台中查看光线颜色和日志,以确定行为是否是您需要的。