Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скрипты Morrowind.doc
Скачиваний:
91
Добавлен:
29.10.2018
Размер:
2.81 Mб
Скачать

Она на меня смотрит?

А вот прекрасный скрипт от Horatio, позволяющий обнаружить, смотрит ли Актер на прямо игрока:

Begin PCLookAtMe

float fPCX

float fPCY

float fPCAngle

float fdx

float fdy

float fRatio

short sPCLookAtMe

set sPCLookAtMe to 1

;можно добавить GetLOS здесь

;у меня GetLOS никогда правильно не работал...хотя я не очень старался

;если игрок далеко

if ( GetDistance, Player > 8000 )

set sPCLookAtMe to 0

else

;ёо, тригонометрия

;это по-губому подсчитывает направления взгляда игрока относительно

;актера, использыет шаг в 45 градусов

set fPCX to ( player->GetPos, X )

set fPCY to ( player->GetPos, Y )

set fPCAngle to ( player->GetAngle, Z )

set fdx to GetPos, X

set fdy to GetPos, Y

set fdx to ( fdx - fPCX )

set fdy to ( fdy - fPCY )

set fRatio to ( fdx / fdy )

if ( fdx > 0 )

if ( fdy > 0 )

if ( fRatio > 1 )

if ( fPCAngle < -45 )

set sPCLookAtMe to 0

endif

else

if ( fPCAngle < -90 )

set sPCLookAtMe to 0

endif

if ( fPCAngle > 135 )

set sPCLookAtMe to 0

endif

endif

else

if ( fRatio < -1 )

if ( fPCAngle < 0 )

if ( fPCAngle > -135 )

set sPCLookAtMe to 0

endif

endif

else

if ( fPCAngle < 45 )

if ( fPCAngle > -90 )

set sPCLookAtMe to 0

endif

endif

endif

endif

else

if ( fdy > 0 )

if ( fRatio < -1 )

if ( fPCAngle > 45 )

set sPCLookAtMe to 0

endif

else

if ( fPCAngle > 90 )

set sPCLookAtMe to 0

endif

if ( fPCAngle < -135 )

set sPCLookAtMe to 0

endif

endif

else

if ( fRatio > 1 )

if ( fPCAngle > 0 )

if ( fPCAngle < 135 )

set sPCLookAtMe to 0

endif

endif

else

if ( fPCAngle > -35 )

if ( fPCAngle < 90 )

set sPCLookAtMe to 0

endif

endif

endif

endif

endif

endif

if ( sPCLookAtMe == 0 )

;делать что-то пока игрок не смотрит

endif

End