Есть ли способ инициализировать триггер в шапке карты без вспомогательных триггеров извне? Тоесть, я хочу чтоб этот триггер регистрировал событие "Инициализация карты", находясь в шапке.
Ещё вопрос. Пытался сделать триггерный 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, что тебе и нужно
ты её не через редактор а через игру открывай и тогда всё норм будет
через редактор из за либы может тупить
Отредактирован 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, что тебе и нужно