Q/A

Добавлен , опубликован
здесь можете задавать вопросы по jass
0
21
9 лет назад
0
nvc123, нужно чтобы камера всегда была на юните по осям X,Y и Z. Тоесть чтобы не зависимо от угла атаки юнит находился в центре камеры (камера находинась на юните или на точке с заданным смещением по XY и Z ).

По XY я зафиксировал положение камеры так:
call CameraSetupSetDestPosition(gameCam,oUnitX+camXYoffsetFlying*Cos(GetUnitFacing(udg_cameraController)*bj_DEGTORAD),oUnitY+camXYoffsetFlying*Sin(GetUnitFacing(udg_cameraController)*bj_DEGTORAD),camXYoffsetFlyingTime)
По Z так:
call CameraSetupSetField(gameCam,CAMERA_FIELD_ZOFFSET,GetUnitFlyHeight(udg_cameraController)+camZoffsetWalking,camZoffTimeFlying)
Но результата не последовало. На ровной местности всё ок, но на впадинах или возвышенностях камера ведёт себя странно. Вот карта. Я стёр все свои попытки это пофиксить, поскольку пока они не увенчались успехом.
Загруженные файлы
0
28
9 лет назад
Отредактирован nvc123
0
RiseD, а в моей карте что не так?
там он по центру осей почти
причём тут угол атаки я так и не понял
если мой вариант не подходит то юзай дгуи(библиотеки камеры и математики)
на большее чем есть в дгуи варкрафт просто не способен
1
21
9 лет назад
Отредактирован Raised
1
nvc123, я её не не могу запустить. JNGP последний. Вчера установил. Настройки стандартные. В игре смещение чересчур большое. Нужно именно по центру.
1
28
9 лет назад
1
RiseD, мою не можешь запустить?
ты её не через редактор а через игру открывай и тогда всё норм будет
через редактор из за либы может тупить
0
21
9 лет назад
Отредактирован Raised
0
nvc123, спс. Дальше разберусь сам.
0
37
9 лет назад
0
юнита надо летающим делать
0
21
9 лет назад
Отредактирован Raised
0
ScorpioT1000, речь изначально шла о летающем юните.
0
15
8 лет назад
0
Доброго времени суток. Можешь подсказать, почему не запускается(либо не работает) ИИ? Точно не могу определить, что же это именно.
1
21
8 лет назад
Отредактирован Raised
1
Есть ли способ инициализировать триггер в шапке карты без вспомогательных триггеров извне? Тоесть, я хочу чтоб этот триггер регистрировал событие "Инициализация карты", находясь в шапке.
5
28
8 лет назад
5
GF RaiseD, использовать библиотеки vjass
у библиотек есть initializer func_name
где func_name имя функции которая запустится при запуске карты (функция должна быть внутри библиотеки)
private func_name takes nothing returns nothing
0
21
8 лет назад
Отредактирован Raised
0
Ещё вопрос. Пытался сделать триггерный 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 градусов. Но это условие никогда не действительно. Я что-то делаю не так.
3
29
8 лет назад
3
скалярное произведение единичных векторов равняется косинусу угла между ними, атан здесь не нужен
а = вектор от атакующего к цели
б = вектор от атакующего вперёд (cos(facing), sin(facing))
скалярное произведение нормализованных а и б нужно сравнить с половиной "ширины" нужного тебе конуса.
3
28
8 лет назад
3
GF RaiseD, док мастер объяснять все просто и понятно
но в чём он прав так это в том что можно обойтись без арктангенса
но если не хочешь учить вектора то
от енума отнимай атакера
т.е. вместо
GetUnitY(attacker)-GetUnitY(enumUnit)
пиши
GetUnitY(enumUnit)-GetUnitY(attacker)
3
29
8 лет назад
Отредактирован Doc
3
Просто если я правильно понимаю все это дело происходит в стандартной системе координат т.е., и тут оно будет страдать в случае, если твой "конус" пересекает переход от 360 градусов к 0, в моем же случае этого не произойдет.
Мб я объясняю непонятно, в таком случае загугли скалярное произведение векторов, увидишь что A x B = |A| * |B| * cosAlpha (Alpha - угол между А и B), тогда если длина А = длина B = 1 -> A x B = cosAlpha, что тебе и нужно
github.com/DoctorGester/crumbling-island-arena/blob/master/game/... я реализовывал это здесь (не jass)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.