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

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

Ответ
 
Borodach

offline
Опыт: 6,328
Активность:
Фиксация юнита в высоте.
Периодически перемещаю юнита в левую часть камеры. Этот юнит меняет высоту в зависимости рельефа, и от этого визуально меняет позицию x,y.
Пытался ставить высоту юниту в зависимости Z точки, но он все равно "прыгает".
Возможно и как это реализовать?
Старый 29.03.2015, 15:05
Melissa
Я всегда хочу как лучше!
offline
Опыт: 30,496
Активность:
Покажи карту) Время смены высоты 0?
Старый 29.03.2015, 15:10
Borodach

offline
Опыт: 6,328
Активность:
Да 0.
Старый 29.03.2015, 15:12
Clamp
Lost in space
offline
Опыт: 71,258
Активность:
Клифы в карте есть?
Старый 29.03.2015, 15:32
Borodach

offline
Опыт: 6,328
Активность:
Clamp, Да, есть.
Старый 29.03.2015, 15:44
Clamp
Lost in space
offline
Опыт: 71,258
Активность:
Borodach, тогда никак.
Clamp добавил:
Хотя мб вру.
Как ты пытался нормализовать высоту юнита?
Старый 29.03.2015, 16:16
Borodach

offline
Опыт: 6,328
Активность:
HeightBar[ip] - Высота точки Z в месте создания юнита
350. - высота юнита в момент создания

function Trig_StatBar_Actions takes nothing returns nothing
local integer ip = 0
local integer l = 1
local real x = GetCameraTargetPositionX() + 300.
local real y = GetCameraTargetPositionY() - 350.
local real z = 0.

    
    if STAT_BAR[ip][1] != null then
    set z = HeightBar[ip] - GetLocZ(x,y)
        call SetUnitX(STAT_BAR[ip][1],x)
        call SetUnitY(STAT_BAR[ip][1],y)
        //call PanCameraToTimed(GetWidgetX(HERO[ip]),GetWidgetY(HERO[ip]),.0)
        //call BJDebugMsg(R2S(GetUnitFlyHeight(STAT_BAR[ip][1])) + " Height ; " + R2S(z) +" Z")
        call SetUnitFlyHeight(STAT_BAR[ip][1],350. + z,0.)
    endif

endfunction
Старый 29.03.2015, 16:37
Clamp
Lost in space
offline
Опыт: 71,258
Активность:
((цитата
call SetUnitFlyHeight(STAT_BAR[ip][1],350. + HeightBar[ip] - GetLocZ(x,y),0.)
))
Тут надо учитывать высоту склона (каждый уровень склона имеет высоту 128, если память не изменяет)
Как вариант можешь приобщиться к тоадкоповскому решению (только оно склоны не учитывает)
library TerrainHeight
    globals
        private location loc = Location(0, 0)
    endglobals

    function GetTerrainZ takes real x, real y returns real
        call MoveLocation(loc, x, y)
        return GetLocationZ(loc)
    endfunction
endlibrary
Хотя у тебя вроде и есть так, но я хз, не видно ведь.
Старый 29.03.2015, 16:42
Borodach

offline
Опыт: 6,328
Активность:
Clamp,У меня GetLocZ(x,y) выполняет эту функцию
Старый 29.03.2015, 16:48
adic3x

offline
Опыт: 107,539
Активность:
А вам надо фактически зафиксировать юнита в одном положение на экране? Чтобы он был как элемент интерфейса?
Я вот не помню, делала-ли наработка от некого Jon нечто подобное, называлась DGUI кажется.
Старый 29.03.2015, 17:50
Borodach

offline
Опыт: 6,328
Активность:
ADOLF:
А вам надо фактически зафиксировать юнита в одном положение на экране? Чтобы он был как элемент интерфейса?
Да
DGUI вроде фиксирует декорацию
Старый 29.03.2015, 17:54
adic3x

offline
Опыт: 107,539
Активность:
Насколько помню я - DGUI дает неплохие функции просчета, которые точно позволяют выставить в том числе и высоту. Хотя я мало что помню на самом деле, могу и ошибаться.
Старый 29.03.2015, 17:57
Borodach

offline
Опыт: 6,328
Активность:
ADOLF, Я думал об использовани DGUI, но из-за моих математических знаний я не понимаю какая из тех функций мне поможет.
Старый 29.03.2015, 18:14
adic3x

offline
Опыт: 107,539
Активность:
Я думал об использовани DGUI, но из-за моих математических знаний я не понимаю какая из тех функций мне поможет.
Вы посчитали, что если вы не можете разобраться из-за недостатка знаний в готовом решении с каким-никаким интерфейсом для вызова - то сможете написать аналог сами с нуля? Нет, правда, вы не шутите?
Старый 29.03.2015, 22:41
Borodach

offline
Опыт: 6,328
Активность:
ADOLF, Я не пытался сделать аналог. Мне просто надо зафиксировать юнита на нужной высоте, думал c помощью DGUI сделать, но там декорация используется. А функции которые множат, делят, складывают матрицы и т.д., не знаю как они могут помочь.
Старый 29.03.2015, 23:20
Ответ

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

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

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

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



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