Возвращает для объекта информацию об его 2D проекции на экран, если он есть в списке для проецирования в 2D координаты.
Точка (0, 0) - центр экрана. (-1, -1) - левый верхний угол. (1, 1) - правый нижний угол.
Если какая-либо возвращаемая координата равна 1 или -1, то объект находится за зоной видимости. Если обе координаты в промежутке (-1, 1), то проецируемая точка видна на экране.
-- библиотека object -- семантика function GetProjectedInfo( objectId ) -- входные параметры: objectId: ObjectId - идентификатор объекта -- возвращаемое значение: table or nil - если объект найден и он в списке для проецирования, то таблица с полями: posX: number - 2D экранная координата в интервале [-1, 1] posY: number - 2D экранная координата в интервале [-1, 1] playerDistance: number - дистанция от объекта до главного игрока в метрах cameraDistance: number - дистанция от объекта до камеры в метрах isLos: boolean - false, если на линии видимости до объекта какое-то препятствие. canProject: boolean - false, если объект не может быть спроецирован. например изменились условия, и он теперь не детектируется детекторами. В обычной ситуации всегда true. -- пример local show = true local projectedInfo =object.GetProjectedInfo( avatar.GetTarget() ) if projectedInfo then local position = {} -- экранные координаты в пикселях position.x = projectedInfo.posX * width / 2 position.y = projectedInfo.posY * height / 2 -- попадание 3D точки в зону видимости if ( math.abs( projectedInfo.posX ) ~= 1 ) and ( math.abs( projectedInfo.posY ) ~= 1 ) then if projectedInfo.isLos then show = false -- точка видна на экране - не показываем else position.y = -height / 2 -- точка за препятствием - показываем сверху end end end