Physics
Physics выполняет лучевую проверку сцены. API доступен только в клиентском Lua-контексте; в Reflex server.lua глобальный объект Physics равен nil.
Physics.Raycast() ничего не рисует и не изменяет в мире. Он только возвращает результат пересечения. Для видимого луча или маркера используйте полученные координаты с WorldVisuals; для экранной подписи — с ImGui и Camera:WorldToViewportPoint().
Где выполняется проверка
Заголовок раздела «Где выполняется проверка»Клиентская физическая сцена проверяет луч по доступным ей collider-ам и сразу возвращает RaycastHit. Это локальный пространственный запрос, а не серверная проверка выстрела: результат не наносит урон и не подтверждает, что сервер разрешит действие.
RaycastHit — структура результата. Присваивание её полям меняет только локальное значение и не перемещает точку столкновения или collider в сцене.
Проверим поверхность под главной камерой:
local origin = Cameras.Main.Positionlocal hit = Physics.Raycast(origin, Vector3.down, 100)
if hit.HasHit then print("Ground: " .. tostring(hit.Point)) print("Distance: " .. tostring(hit.Distance))else print("Nothing below the camera")endRaycast с ограничением
Заголовок раздела «Raycast с ограничением»Physics.Raycast( origin: Vector3, direction: Vector3, maxDistance: number): RaycastHit| Аргумент | Тип | Описание |
|---|---|---|
origin |
Vector3 |
Начало луча в мировых координатах. |
direction |
Vector3 |
Направление луча. |
maxDistance |
number |
Максимальная длина проверки. |
Raycast без ограничения
Заголовок раздела «Raycast без ограничения»Physics.Raycast( origin: Vector3, direction: Vector3): RaycastHitВариант без третьего аргумента выполняет ту же проверку без заданного модулем ограничения дистанции.
Оба варианта вызываются через точку: Physics.Raycast(...).
RaycastHit
Заголовок раздела «RaycastHit»Результат возвращается всегда, даже если луч ничего не задел.
| Поле | Тип | Доступ | Описание |
|---|---|---|---|
HasHit |
bool |
get/set |
true, если найдено пересечение. |
Distance |
number |
get/set |
Дистанция от origin до точки попадания. |
Point |
Vector3 |
get/set |
Точка попадания в мировых координатах. |
При промахе в проверенном случае результат содержал HasHit = false, Distance = 0 и Point = Vector3.zero. Сначала проверяйте HasHit, а затем используйте остальные поля.
Поля структуры допускают присваивание, но это изменяет только полученный результат и не влияет на физическую сцену.