0

我正在尝试使用该Physics.Raycast方法,但我收到错误消息:

'UnityEngine.Physics.Raycast(UnityEngine.Vector3, UnityEngine.Vector3, float, int)' 的最佳重载方法匹配有一些无效参数。

这很奇怪,因为 itellisense 和文档都告诉我这是允许的:

RaycastHit hit = new RaycastHit();
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, hit)) {
    print(hit.point.ToString());
    selection.transform.Translate(hit.point - selection.transform.position);
}

任何想法?

4

2 回答 2

4

我认为您需要在 Physics.Raycast(ray, hit) 中的“命中”之前使用 out 关键字。

RaycastHit hit = new RaycastHit();
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit)) {
    print(hit.point.ToString());
    selection.transform.Translate(hit.point - selection.transform.position);
}
于 2009-11-01T00:01:34.403 回答
-1

In C# we must use a precursor out parameter before the variable hit in order to get the function to assign data to it.

于 2012-12-06T05:59:24.800 回答