Z цели Камеры

Добавлен
Кто-нибудь знает как устанавливается координата Z цели камеры по неровностям ландшафта?

Принятый ответ

я так понял если двигать камеру через функцию SetCameraPosition, то должно пройти 0.04 сек, прежде чем камера установится на новое место.
Попробуй использовать функцию SetCameraQuickPosition (я правда не использовал её и даже не знаю что она делает, но, возможно, это то что я думаю)
:D
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
24
12 лет назад
0
Вот кусок кода из Control System by MF я добавил коментарии

l это переменная типа точка(глобальная)
Z1 и Z2 переменные типа реальная(локальные)
Angle1 реальная переменная(локальная)
udg_Geroi переменная типа юнит с твоим героем(глобальная)
offset Реальная переменная (локальная)
перемещаем точку l на место юнита
call MoveLocation(l,GetUnitX(udg_Geroi),GetUnitY(udg_Geroi))
Устанавливаем переменную Z1 высотой точки l
set Z1 = GetLocationZ(l)
Перемещаем точку l на 200 за спину юнита
call MoveLocation(l,GetUnitX(udg_Geroi)-200*Cos(GetUnitFacing(udg_Geroi)*bj_DEGTORAD),GetUnitY(udg_Geroi)-400*Sin(GetUnitFacing(udg_Geroi)*bj_DEGTORAD))
Устанавливаем переменную Z2 высотой точки l
set Z2 = GetLocationZ(l)
если высота точки под юнитом+100 больше или равно высоте точки за спиной юнита
if(Z1+100>=Z2)then
устанавливаем оффсет равный высоте камеры+ высота полета героя+130+ высота точки под героем- позиция глаза камеры (хз что это)
set offset=GetCameraField(CAMERA_FIELD_ZOFFSET)+GetUnitFlyHeight(udg_Geroi)+130+Z1-GetCameraEyePositionZ()
Устанавливаем перменную Angle1 = -10
set Angle1 = -10
else
далее аналогично только другие значения
set offset=R2I(GetCameraField(CAMERA_FIELD_ZOFFSET))+100+GetUnitFlyHeight(udg_Geroi)+Z2-R2I(GetCameraEyePositionZ())
set Angle1 = -30
endif
устанавливаем высоту камеры равной переменной оффсет
call SetCameraField(CAMERA_FIELD_ZOFFSET,offset,0.20)
устанавливаем угол атаки равный переменной Angle1
call SetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK,Angle1,0.60)
0
2
12 лет назад
0
darkowlom, Спасибо, но это не то. Мне хотелось бы узнать какой расчет происходит в функции GetCameraTargetPositionZ или GetCameraEyePositionZ. Я предполагаю там высчитывается средняя высота рельефа, который попадает в видимость камеры + какие-нибудь константы и т.п.
Мне это нужно для того, чтобы высчитывать Z цели камеры без задержки. Может кто-нибудь подскажет другой способ. Короче, вот примерный код:
//...
 float Z

 void blablabla(float x, float y)
 {
    SetCameraPosition(x, y)
    TimerStart(CreateTimer(), 0.04, false, \   // Вот хотелось без этой задержки
       lambda void () 
       {
           Z = GetCameraTargetPositionZ()
           DestroyTimer(GetExpiredTimer())
       }
     )
 }
//...
0
14
11 лет назад
0
я так понял если двигать камеру через функцию SetCameraPosition, то должно пройти 0.04 сек, прежде чем камера установится на новое место.
Попробуй использовать функцию SetCameraQuickPosition (я правда не использовал её и даже не знаю что она делает, но, возможно, это то что я думаю)
:D
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.