[Doc Unity](https://docs.unity3d.com/ScriptReference/Camera.html)
```csharp
public static Camera main
```
Свойство **Camera.main** используется для обращения к главной камере сцены. Главная камера - это та камера, у которой установлен тег "MainCamera".
Обычно это основная камера, которую использует игра для отображения всего происходящего на сцене.
Однако следует отметить, что использование **Camera.main** может быть затратным в плане производительности, так как вызов этого свойства выполняет поиск по всем камерам в сцене, чтобы найти ту, у которой установлен тег "MainCamera". Если вы часто обращаетесь к главной камере, рекомендуется кэшировать ссылку на нее в переменной и использовать эту переменную вместо повторного вызова **Camera.main**.
<br>
```csharp
public Ray ScreenPointToRay(Vector3 position)
```
Метод преобразует экранные координаты (пиксели) в луч (ray), который исходит из камеры и проходит через указанную точку на экране. Этот луч можно использовать для определения объектов в 3D-пространстве, с которыми взаимодействует пользователь при клике или наведении указателя мыши.
Когда вы передаете вектор 2D или 3D (с координатами x и y, соответствующими позиции на экране, и z обычно равным 0) в качестве аргумента этому методу, он возвращает новый объект типа Ray, который описывает луч, исходящий из камеры и проходящий через указанную точку на экране.
Этот метод часто используется в сочетании с физическими системами Unity, такими как коллайдеры и raycast, для определения объектов, над которыми находится указатель мыши, и выполнения определенных действий при взаимодействии с ними.
<br>
```csharp
public Ray ViewportPointToRay(Vector3 position)
```
Метод преобразует координаты точки в пространстве видового порта (viewport) в луч (ray), который исходит из камеры и проходит через указанную точку в пространстве видового порта.
Видовой порт - это нормализованное пространство координат, где значения X и Y находятся в диапазоне от 0 до 1. Нижний левый угол равен (0, 0), верхний правый угол равен (1, 1), а Z-координата обычно равна 0.
Отличие от ScreenPointToRay() в том, что ViewportPointToRay() работает с нормализованными координатами, в то время как ScreenPointToRay() использует экранные координаты (пиксели).