Q/A

Добавлен , опубликован
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
29
Старый распространненый баг с камерой, которая неадекватно себя ведет рядом с водой?
Вообще, почему у юнита высота отрицательная?
21
Эта плоскость представляет собой нечто вроде полотна на рельефе, и служит для того чтобы летающие юниты не пропадали внезапно у обрывов. Наверное, если она есть.

alexprey, нет, с водой я еще не работал. Высота отрицательная потому что его координата Z ниже 0. А какие проблемы могут быть с водой? Уровень воды ведь всегда одинаков. Имхо ЭТО проблема и если с ней разобраться, то пофиксить поведение камеры на воде не составит труда. Даже есть каким-то образом уровень воды будет разным в нескольких участках карты.

Ну высота отрицательная потому что:
oUnitZ+GetUnitFlyHeight(udg_cameraController)+Zoffset < 0
Что такое " oUnitZ" описал выше.

И кстати, функция "GetCameraTargetPositionZ()" возвращает высоту камеры над рельефом или относительно системы координат карты?

Напрягает то, что в некоторых местах всё работает превосходно, а в других случается такое:

кат
Загруженные файлы
21
И кстати, функция "GetCameraTargetPositionZ()" возвращает высоту камеры над рельефом или относительно системы координат карты?
Возвращает положение относительно координат карты
28
RiseD, Z рельефа в воде равна Z рельефа дна
хотя высота юнита считается не от дна а от поверхности воды
у меня из за этого проблемы были с движением снарядов над водой
21
Нашел тут статью, но кое-где автор пишет явный бред.
Мне бы пригодились образцы камер, привинченных к летающим юнитам. Даже видел нечто подобное на ютубе когда-то. Не могу понять как это сделать.

Может уже чего нашли за 12 лет ковыряний
Нашел ту карту. Пока не разобрался, но главное что это возможно.
38
Тебе надо сложить высоту локации с высотой юнита. Но зачем все это, когда есть dgui, или посмотри как в кампании джека я это делал
Я уде не помню, как заставить камеру не оьращать внимание на рельеф
21
ScorpioT1000, мне нужно чтоб камера реагировала не на рельеф (это уже сделано), а на настоящую высоту юнита, которая предположительно зависит от деформирующего фактора некой невидимой/неописанной карты высот/маски, по которой передвигаются летающие юниты.
28
RiseD, столько бреда за раз я давно не слышал
location lguz=Location(0,0);
unit myunit= // юнит к которому крепим камеру

define height=1800 //высота камеры относительно юнита

float GetZ(float x,float y){
    MoveLocation(lguz,x,y);
    return GetLocationZ(lguz);
}

void Update(){ // эту функцию вешаем на таймер с периодом 0,025
    float z=GetZ(GetUnitX(myunit),GetUnitY(myunit));
    if(z<0){
        z=0;
    }
    if(GetOwningPlayer(myunit)==GetLocalPlayer()){
        ResetToGameCamera(0);
        SetCameraField(CAMERA_FIELD_TARGET_DISTANCE,z+GetUnitFlyHeight(myunit)+height,0);
        SetCameraTargetController(myunit,0,z/2,false);
    }
}
пишу по памяти но вроде работает
21
nvc123, размести юнита с фиксированной высотой полёта в эдиторе - его высота будет напрямую зависеть от рельефа, но в игре высота его полёта зависит не только от рельефа. В остальном да - весьма вероятно что я написал бред. Сейчас проверю что вышло.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.