#c# #unity3d
Вопрос:
Я хочу иметь сферы, в которые вы можете телепортироваться, когда нажимаете e, и когда вы смотрите на сферу, в основном я хочу проверить, смотрит ли игрок на сферу.
Комментарии:
1. Сделайте снимок радиопередачи и определите, пересекается ли она с объектами, которые вы ищете. Вы также можете ограничить слой, для которого вы создаете, только взаимодействующими объектами.
2. Определите «смотреть» более четко … Raycast хорош, если вы хотите проверить точное направление .. или достаточно, чтобы объект находился в определенном диапазоне?
Ответ №1:
Вы должны использовать Physics.Raycast
. Это отбрасывает луч (бесконечную линию) из точки а в направлении определенного Вектора3. Вы должны использовать этот код:
//set mask to the mask of the object you
//want to look at in the editor.
public LayerMask mask;
private void Update()
{
if(Physics.Raycast(transform.position, transform.forward, out var hit, Mathf.Infinity, mask))
{
var obj = hit.collider.gameObject;
Debug.Log($"looking at {obj.name}", this);
}
}
Вот некоторые дополнительные ресурсы:
Комментарии:
1. Так могу ли я добавить это в плеер?
2. Прикрепите его к камере или к чему угодно, из чего вы хотите провести линию (если у вас есть стандартная игра, прикрепите ее к камере). Просто добавьте его в функцию обновления, и все должно работать. Если это не скажет мне, что произойдет.
3. Исключение NullReferenceException: Ссылка на объект не установлена для экземпляра объекта LookingAtOrb.Update () (в Assets/LookingAtOrb.cs:21) — это то, что происходит, когда я прикрепляю его к камере
4. Я изменил его. Скажите мне, если вы получите еще одну ошибку.
5. АктивыLookingAtOrb.cs(27,2): ошибка CS1513: } ожидалось, что у него есть закрывающий столбец, однако