nvc123, нужно чтобы камера всегда была на юните по осям X,Y и Z. Тоесть чтобы не зависимо от угла атаки юнит находился в центре камеры (камера находинась на юните или на точке с заданным смещением по XY и Z ).
Но результата не последовало. На ровной местности всё ок, но на впадинах или возвышенностях камера ведёт себя странно. Вот карта. Я стёр все свои попытки это пофиксить, поскольку пока они не увенчались успехом.
RiseD, а в моей карте что не так?
там он по центру осей почти
причём тут угол атаки я так и не понял
если мой вариант не подходит то юзай дгуи(библиотеки камеры и математики)
на большее чем есть в дгуи варкрафт просто не способен
Есть ли способ инициализировать триггер в шапке карты без вспомогательных триггеров извне? Тоесть, я хочу чтоб этот триггер регистрировал событие "Инициализация карты", находясь в шапке.
Ещё вопрос. Пытался сделать триггерный Cleave и ограничить его действие следующим сектором:
кид
if bj_RADTODEG*Atan2(GetUnitY(attacker)-GetUnitY(enumUnit),GetUnitX(attacker)-GetUnitX(enumUnit)) >= GetUnitFacing(attacker)-65 and bj_RADTODEG*Atan2(GetUnitY(attacker)-GetUnitY(enumUnit),GetUnitX(attacker)-GetUnitX(enumUnit)) <= GetUnitFacing(attacker)+65 then
Я хотел таким образом ограничить клив сектором в 130 градусов. Но это условие никогда не действительно. Я что-то делаю не так.
скалярное произведение единичных векторов равняется косинусу угла между ними, атан здесь не нужен
а = вектор от атакующего к цели
б = вектор от атакующего вперёд (cos(facing), sin(facing))
скалярное произведение нормализованных а и б нужно сравнить с половиной "ширины" нужного тебе конуса.
GF RaiseD, док мастер объяснять все просто и понятно
но в чём он прав так это в том что можно обойтись без арктангенса
но если не хочешь учить вектора то
от енума отнимай атакера
т.е. вместо
Просто если я правильно понимаю все это дело происходит в стандартной системе координат т.е., и тут оно будет страдать в случае, если твой "конус" пересекает переход от 360 градусов к 0, в моем же случае этого не произойдет.
Мб я объясняю непонятно, в таком случае загугли скалярное произведение векторов, увидишь что A x B = |A| * |B| * cosAlpha (Alpha - угол между А и B), тогда если длина А = длина B = 1 -> A x B = cosAlpha, что тебе и нужно
Отредактирован nvc123
там он по центру осей почти
причём тут угол атаки я так и не понял
если мой вариант не подходит то юзай дгуи(библиотеки камеры и математики)
на большее чем есть в дгуи варкрафт просто не способен
Отредактирован Raised
ты её не через редактор а через игру открывай и тогда всё норм будет
через редактор из за либы может тупить
Отредактирован Raised
Отредактирован Raised
Отредактирован Raised
где func_name имя функции которая запустится при запуске карты (функция должна быть внутри библиотеки)
Отредактирован Raised
а = вектор от атакующего к цели
б = вектор от атакующего вперёд (cos(facing), sin(facing))
но в чём он прав так это в том что можно обойтись без арктангенса
но если не хочешь учить вектора то
от енума отнимай атакера
т.е. вместо
Отредактирован Doc
Мб я объясняю непонятно, в таком случае загугли скалярное произведение векторов, увидишь что A x B = |A| * |B| * cosAlpha (Alpha - угол между А и B), тогда если длина А = длина B = 1 -> A x B = cosAlpha, что тебе и нужно