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), чтобы определить текущее расстояние.