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, то лазер будет игнорировать постройку, на которой стоит.