Перейти к основному содержимому

Laser

Лазер похож на стандартный сенсор из Scrap Mechanic, но вместо логического сигнала он предоставляет дополнительную информацию, которая может быть полезна для таких вещей, как [кинематика робота] (https://en.wikipedia.org/wiki/Robot_kinematics) (больше похоже на Улучшенный сенсор кинематики)

Для опытных пользователей: для обнаружения объекта используется метод raycast. Но это также означает, что существует смещение между начальной точкой raycast и самим объектом. он небольшой, но это может вызвать проблемы с математикой!

Структуры


LaserData

Эта структура содержит информацию о полученном ответе лазера.

Поля

  • directionWorld [ Vec3 ] Направление вектора raycast.
  • fraction [ number ] Доля расстояния (0-1), пройденного до столкновения, деленная на длину луча.
  • normalLocal [ Vec3 ] Вектор нормали к поверхности относительно поворота цели.
  • normalWorld [ Vec3 ] Вектор нормали к поверхности.
  • originWorld [ Vec3 ] Точка начала raycast.
  • pointLocal [ Vec3 ] Точка полученного места относительно лазера.
  • pointWorld [ Vec3 ] Точка полученного места.
  • type [ string ] Тип цели (Смотрите sm.physics.types)
  • valid [ boolean ] True, raycast действителен.

Функции

setDistance

Laser.setDistance( distance )

Устанавливает дистанцию (в метрах!).

Аргументы:

  • distance [ number ] Новая дистанция.

getLaserData

Laser.getLaserData()

Получает информацию с лазера (Отправляет raycast!).

Возвращает:

  • [ boolean ] True, если что-то нашёл.
  • [ LaserData ] Информация с лазера.

toggleLaser

Laser.toggleLaser()

Переключает отображение лазера.


isBeamEnabled

Laser.isBeamEnabled()

Возвращает статус отображения лазера.

Returns:

  • [ boolean ] Статус отображения лазера.

ignoreCurrentBody

Laser.ignoreCurrentBody( bool )

Аргументы:

  • bool [ boolean ] Будет ли игнорироваться постройка.

Если true, то лазер будет игнорировать постройку, на которой стоит.