×
Меню
Индекс

MSFD Расстояние от одного объекта до другого

GetDistance, "ObjectID" (returns float)
 
"ObjectID1"->GetDistance, "ObjectID2"
 
Эта функция возвращает расстояние (в единицах) от одного объекта до другого.
По синтаксису это расстояние между вызывающим объектом (тем, к которому присоединен скрипт) и вызываемым объектом.
Может использоваться для того, чтобы начинать атаку, производить другие действия или просто определить, где находится игрок для использования в скриптах.
Это фрагмент оригинального Морровиндовского скрипта:
 
; Из скрипта для NPC Ashamanu:
; Ashamanu даст журнальную запись 60, когда игрок близко
 
if ( GetDisabled != 1 )
     if ( GetDistance Player <= 256 )
          if ( GetDistance "guar_white_unique" <= 256 )
               if ( GetJournalIndex "MS_WhiteGuar" <= 50 )
                    Journal "MS_WhiteGuar" 60
               endif
          endif
     endif
endif
 
Ограничения:
GetDistance требует, чтобы объект, вызываемый как параметр, был помещен в игровой мир (в редакторе) и имел флаг references persist (или был NPC).
Учтите, что вы должны использовать эту функцию только с уникальным ID или там, где вы абсолютно уверены в существовании только одной копии ID – иначе игровой движок просто возьмет первую копию ID и выдаст дистанцию до нее, вероятнее всего, не до того объекта, который вы хотите.
Так, скрипт, предупреждающий игрока о рыбе-убийце, когда она ближе 800 единиц, должен быть присоединен к рыбе-убийце, и проверять расстояние до игрока (который уникален), а не наоборот.
Если вы определяете расстояние до объекта, который движется с использованием функции Move или MoveWorld, GetDistance будет по-прежнему возвращать расстояние до оригинального местоположения объекта (того, которое установлено в редакторе). 
Используйте GetPos и старый добрый метод Пифагора (c2 = a2 + b2), чтобы определить текущее расстояние.