XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
JET_LI

offline
Опыт: 1,724
Активность:
Точка Z камеры
Как прекрепить норм т. Z камеры к юниту, то есть всегда на уровне была юнита, делал так:
// функция получения Z камеры игрока
real GetCamZ(player pl){
    if (GetLocalPlayer()==pl){
        return GetCameraEyePositionZ();
    }
    return .0;
}
// Испробовал по разному:
// 1 Вариант
nothing <somefunction>{
    SetCameraFieldForPlayer(pl,CAMERA_FIELD_ZOFFSET,GetLocationZ(GetUnitLoc(units[pid]))-GetCamZ(pl)+256​,.1);
}
// 2 Вариант
nothing <somefunction>{
    SetCameraFieldForPlayer(pl,CAMERA_FIELD_ZOFFSET,GetLocationZ(GetUnitLoc(units[pid]))-GetCamZ(pl),.1)​;
}
// 3 Вариант
nothing <somefunction>{
    SetCameraFieldForPlayer(pl,CAMERA_FIELD_ZOFFSET,GetLocationZ(GetUnitLoc(units[pid])),.1);
}
не один из этих вариантов норм не работает!!! помогите сделать так, чтобы камера не ниже юнита была, не выше, а точно следовало за юнитом. плз=)
Старый 15.05.2010, 17:28
Doc

offline
Опыт: 63,163
Активность:
Ахахах, сжасс и локейшены, парень ну ты даешь. Зачем тебе высота камеры лол? Отнимай от начальной высоты камеры высоту юнита.
DoctorGester добавил:
Нет вру, надо прибавлять.
Старый 15.05.2010, 18:01
adic3x

offline
Опыт: 108,439
Активность:
SetCameraFieldForPlayer(pl,CAMERA_FIELD_ZOFFSET,GetLocationZ(GetUnitLoc(units[pid])),.1);
GetLocationZ(...) создает точку, но вы ее даже никуда не помещаете - память утекает, а учитывая переодичность...
если вам надо узнавать высоту точки - делайте так
location l_temp = Location (0., 0.)
real GetCordZ (x, y) {
    MoveLocation (l_temp, x, y)
    return GetLocationZ(l_temp)
}
а по теме да, вам надо прибавлять высоту юнит относительно поверхности к высоте поверхности, относительно абсолютного 0
Старый 15.05.2010, 21:33
Dyospyros

offline
Опыт: 181
Активность:
ADOLF:
создает точку, но вы ее даже никуда не помещаете - память утекает
а если точку заносить в локальную переменную, а после удалять?
И у меня подобная проблема.
ADOLF:
высоту юнит относительно поверхности к высоте поверхности, относительно абсолютного 0
А можно в цифрах пожалуйста?
Старый 04.08.2010, 17:58
ScorpioT1000
Работаем
offline
Опыт: отключен
void SetUnitFly(unit u) { UnitAddAbility(u , 'Aave'); UnitRemoveAbility(u , 'Aave') }

location GL = Location(0.0,0.0)

real GetZ(real X,real Y) {
    MoveLocation(GL , X , Y)
    return GetLocationZ(GL)
}

real GetUnitZ(unit u) {
    return GetUnitFlyHeight(u) + GetZ(GetUnitX(u),GetUnitY(u))
}

void SetUnitZ(unit u,real z) {
    MoveLocation(GL , GetUnitX(u) , GetUnitY(u))
    SetUnitFlyHeight(u , z - GetLocationZ(GL) , 0.0)
}



// ==>
CamZ = GetUnitZ(unit)+FaceHeight
// <==
Старый 06.08.2010, 00:17
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
оффтоп но может быть полезно: current камера z - 1650. то есть чтоб не высчитывать я вам это говорю
Старый 06.08.2010, 01:03
Dyospyros

offline
Опыт: 181
Активность:
GetCameraEyePositionZ();
Что делает эта функция? Когда то своей формулы вычисления высоты я отнял GetCameraEyePositionZ(), то камера стала слушаться. Можно ли эту функцию использовать для нескольких игроков?И как?
Старый 18.08.2010, 13:33
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
Как-то я пробовал, и у меня при таком объявлении location GL = Location(0.0,0.0) локация создавалась, но никуда не двигалась. Пришлось в инициализацию записывать GL = Location(0.0,0.0), тогда нормально.
Старый 21.08.2010, 23:30
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 14:28.