Доброго времени суток.
Уже давно существует проблема, что при прикреплении к юниту камеры, например, с помощью функции:
Уже давно существует проблема, что при прикреплении к юниту камеры, например, с помощью функции:
call SetCameraTargetController(unit, 0, 0, false)
когда юнит забирается на какую-нибудь высоту, камера смещается по оси Z неравномерно с набираемой юнитом высотой.
Начал разбираться, оказалось, что камера имеет параметр CameraTargetPositionZ, который плавно вырастает при подходе к рельефу (то есть юнит ещё не поднялся выше, а камера начинает приподниматься). Изменить его никак нельзя, можно только узнать с помощью функции
Начал разбираться, оказалось, что камера имеет параметр CameraTargetPositionZ, который плавно вырастает при подходе к рельефу (то есть юнит ещё не поднялся выше, а камера начинает приподниматься). Изменить его никак нельзя, можно только узнать с помощью функции
GetCameraTargetPositionZ()
Первым, что взбрело на ум - компенсировать разницу между высотой юнита и параметром CameraTargetPositionZ, функция, отвечающая за подъём камеры над землей стала выглядеть так:
set offset = BlzGetUnitZ(unit) + ( BlzGetUnitZ(unit) - GetCameraTargetPositionZ() )
call SetCameraFieldForPlayer(Player(0),CAMERA_FIELD_ZOFFSET, offset, 0.15)
что приводит тупо к постоянному увеличению высоты камеры, что не ок.
Начал копаться дальше, оказалось есть всё же функция, которая решает проблему:
call PanCameraToWithZ(GetUnitX(unit), GetUnitY(unit), offset)
Работает идеально - камера всегда на нужной высоте над юнитом, где бы он ни был. Но как говорится, есть одно НО... При использовании этой функции и при условии, что юнит стоит на месте, начинает по непонятным причинам сам по себе расти параметр CameraTargetPositionZ. Сначала незаметно, затем начинается тряска камеры. Если использовать эту функцию в отношении юнитов, которые НИКОГДА НЕ стоят на месте, то всё ок, но вот незадача - юнит же может стоять на месте.
Есть ли вообще решение этой проблемы? Или это очередной барьер варкрафта, который никак не превзойти?
Есть ли вообще решение этой проблемы? Или это очередной барьер варкрафта, который никак не превзойти?
Наработку можно чекнуть здесь -> xgm.guru/p/wc3/3dcamera
Принятый ответ
CRASHmaster:
к сожалению, не решена. Чем выше юнит забирается на холм, тем выше камера становится над юнитом.Привет. Посмотри эту карту (версию 4.00): xgm.guru/forum/showthread.php?p=355988, в ней вроде подобная проблема решена. Но я подробно не изучал сам.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
CRASHmaster
4 года назад
0
Привет. Посмотри эту карту (версию 4.00): xgm.guru/forum/showthread.php?p=355988, в ней вроде подобная проблема решена. Но я подробно не изучал сам.
Загруженные файлы
- 3D_i_upravlenie_na_strelkakh_v4.00.w3x
0
Brilock
4 года назад
0
CRASHmaster:
к сожалению, не решена. Чем выше юнит забирается на холм, тем выше камера становится над юнитом.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.