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



我搜索了一遍又一遍,找不到任何有效的答案,任何似乎相关的答案都适用于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 ");
}
}
}
}
}

您可以在控制台中查看光线颜色和日志,以确定行为是否是您需要的。

最新更新