Итак, вы передаете луч, RayCastHit и число в Physics.Raycast, и он распознает их следующим образом:
Physics.Raycast (ray, hit, distance)
Каждый раз, когда вы делаете Raycast смаску слоя, вам нужно сначала установить расстояние приведения, потому что это то, что все методы raycast ожидают в качестве первого числа после использования.Вот версия, которая должна работать, используя Mathf.Infinity
в качестве расстояния:
if (Input.GetMouseButton(0)) {
RaycastHit hit;
int layerMask = (1 << 8); // Plane's Layer
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast (ray, out hit, Mathf.Infinity, layerMask)) {
transform.position = hit.point;
}
}