Вопрос

Я пытаюсь использовать Physics.Raycast метод, но я получаю ошибки, говорящие:

Наилучший перегруженный метод подходит для 'UnityEngine.Физика.Радиовещание (UnityEngine.Вектор3, 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);
}

Есть какие-нибудь идеи?

Это было полезно?

Решение

Я думаю, вам нужно ключевое слово out перед "hit" в Physics.Raycast (луч, попадание).

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);
}

Другие советы

В C # мы должны использовать параметр-предшественник out до того, как переменная попадет в in чтобы заставить функцию присваивать ей данные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top