Добавлен
ребят поздравьте я научился двигать юнита не через полярки а через x y и посмотрите все ли я правильно делаю? скилл работает, я хотел спросить так надо делать для всех скиллов? например set udg_Cos = Cos(udg_Angle*bj_DEGTORAD) и что значит это дегторад?
вот код
Set Caster = (Casting unit)
Set Angle = (Angle from (Position of Caster) to Target Point Ability)
Set Speed = 10.00
Custom script: set udg_Cos = Cos(udg_Angle*bj_DEGTORAD)
Custom script: set udg_Sin = Sin(udg_Angle*bj_DEGTORAD)
Custom script: set udg_X = GetWidgetX(udg_Caster)+udg_Speed*udg_Cos
Custom script: set udg_Y = GetWidgetY(udg_Caster)+udg_Speed*udg_Sin
Custom script: call SetUnitX(udg_Caster, udg_X)
Custom script: call SetUnitY(udg_Caster, udg_Y)

Принятый ответ


что значит это дегторад?
degrees to radian - градусы в радианы
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
19
4 года назад
2
Похожие вопросы:

ответ
ААААА, ты про декорации)
1 Это должна быть декорация (не разрушаемый объект)
2 минимальный и максимальный масштабы должны быть разными
3 ставишь декорацию выбираешь её и home\end увеличить\уменьшить ширину, pgup\pgdwn - увеличить\уменьшить высоту.
4 если именно X Y надо разные - открываешь свойства её и меняешь цифрами.
ответ
хоспаде, еле нашел
вам можно сказать повезло, там всё на простом джассе, + не забываем заглядывать в место для нестандартного кода, интересующие вас ф-ии это SX() и SY()
аналогично делаем для своих областей, в триггере инициализации я записываю в переменные значения координат игрового ректа, то же самое можно сделать с любой другой областью
управление w a d
*прочитал комменты*
если областей много, то всегда можно склеить из горизонтальных и вертикальных линий что-нибудь, из косых тоже можно, но там более геморно с событием выхода юнита из такой области.
Можно просто запоминать знак на каждом юните относительно каждой прямой, если он поменялся, значит юнит уже по другую сторону от прямой, мб ещё совместить это с системой чанков (и системой которая будет рассчитывать размер чанка относительно максимального радиуса действия спелла и размеров карты, для оптимальных размеров оного), но кому это нужно в вц3?
ответ
local location loc=GetUnitLoc(GetEnumUnit())
local location tcLoc=GetUnitLoc(udg_topot_caster)
local real a=AngleBetweenPoints(tcLoc, loc)
call SetUnitX(GetEnumUnit(),GetLocationX(loc) +CosBJ(a) * 10.00 )
call SetUnitY(GetEnumUnit(),GetLocationY(loc) +SinBJ(a) * 10.00 )
call RemoveLocation(tcLoc)
call RemoveLocation(loc)
set tcLoc=null
set loc=null
ответ
FabulousTiger, создаешь 12 х 12 абилок с разными координатами на карте команд, ну или меньше, все завивит от того что требуется и способность на основе Техника ('ANeg') и меняя уровень техники, ты свапаешь абилки и меняешь положение иконки на карте команд на ходу, изи но довольно громоздко.
Так же есть мемхак, но если вы задаёте такие вопросы явно рано о нем думать...
ответ
Я бы попробовал так.
function R2SX takes real r returns string
    return R2SW(r, 0, -1)
enfunction

SaveBoolean(Hash, StringHash(R2SX(x)), StringHash(R2SX(y)), key)

0
7
4 года назад
0
и когда я двигаю его так то это считается как двигать юнита или приказать двигаться?
0
27
4 года назад
0
дегторад
ссылка
0
29
4 года назад
0

что значит это дегторад?
degrees to radian - градусы в радианы
Принятый ответ
0
27
4 года назад
Отредактирован MpW
0
ну вроде все правильно. переходи на jass и луа.
у тебя утечка, угол создает точку Position of Caster
2
17
4 года назад
2
снова подъехали вопросы с интересными названиями xD
0
7
4 года назад
Отредактирован Ельнур
0
спасибо разобрался код выше который я написал это двигать юнита(мгновенно) а не приказывать ему двигаться вопрос можно закрыть.
0
27
4 года назад
0
ну вроде все правильно. это почти что станд реализация смещения от точки под углом. пока, что все норм, единственное, что с углом у тебя проблема. во первых, у тебя утечка, угол создает точку Position of Caster. во-вторых, можно было заранее перевести в радианы и не надо было бы пихать это udg_Angle*bj_DEGTORAD в косинусы и синусы
0
7
4 года назад
0
это его собрат, кстати в чем их разница ?Set Caster = (Casting unit)
Set SpellPoint = (Position of Set SpellPoint = (Position of Caster)
Caster) Set Angle = (Facing of Caster)
Set Angle = (Angle - 90.00)
Set Distance = 200.00
Custom script: set udg_X = GetLocationX(udg_SpellPoint) + udg_Distance * Cos(udg_Angle * bj_DEGTORAD)
Custom script: set udg_Y = GetLocationY(udg_SpellPoint) + udg_Distance * Sin(udg_Angle * bj_DEGTORAD)
Custom script: call SetUnitX(udg_Caster, udg_X)
Custom script: call SetUnitY(udg_Caster, udg_Y)

Steal nerves:
ну вроде все правильно. переходи на jass и луа.
у тебя утечка, угол создает точку Position of Caster
я знаю я специально так коротко написал чтобы потестить

так понятно оба эти кода просто двигать юнита мгновенно, а как ему через х y приказать двигаться( не мгновенно?)

и например когда будет даммикаст я не хочу ордер делать на polar projection bj как сделать ордер на x y чтобы он кастанул не в polar projection bj а в x y? чтобы не утекало?
0
27
4 года назад
Отредактирован MpW
0
Ельнур, ни в чем разницы нет, только как это реализовано. здесь берется точка, вместо координат. так отдай приказ, в чем проблема? есть разные нативки (координаты и точка).
0
29
4 года назад
0
так понятно оба эти кода просто двигать юнита мгновенно, а как ему через х y приказать двигаться( не мгновенно?)
Так сложно сделать на гуи и конвертировать в JASS?
0
7
4 года назад
0
так я понял есть просто point with offset point (x,y) оно не бж :D спасибо всем разобрался

так я понял есть просто point with offset point (x,y) оно не бж :D спасибо всем разобрался call IssuePointOrderLoc( udg_Caster, "move", OffsetLocation(udg_SpellPoint, udg_X, udg_Y) )
0
27
4 года назад
0
Ельнур, только надо точки удалять не забывать. многие советовали использовать вместо точек координаты.

point with offset point (x,y) и OffsetLocation(udg_SpellPoint, udg_X, udg_Y) - новые функции?
1
7
4 года назад
Отредактирован nazarpunk
1
ух на душе легко стало а то эти поляркибж хоть сколько не обнуляй все равно создают утечки)

Steal nerves:
Ельнур, только надо точки удалять не забывать. многие советовали использовать вместо точек координаты.

point with offset point (x,y) и OffsetLocation(udg_SpellPoint, udg_X, udg_Y) - новые функции?
вот я имел вииду это она на 1 этаж выше поляркибж

кстати мы заменили PolarProjectionBj но остается bj_Degtorad хехе) что делать тут)

и еще я хотел добавить тот код который выше он в 2 раза дистанцию увеличивает получается полярка точки
и точка ( полярка точки) из за этого пишем так и все будет нормально работать) Боевая единица - Order Caster to Двигаться (SpellPoint offset by ((X / 2.00), (Y / 2.00)))

непотребство сморозил выше

нашел функцию которая не багается это

спасибо всем тему можно закрывать через год буду в отрядах джассеров) главное запомнить эти все кастом скрипты

узнал формулу bj_degtorada это pi\180
1 пункт от NazarPunk: 1.1 (ненормативная лексика)
1
29
4 года назад
1
через год буду в отрядах джассеров)
Через год джасс безнадёжно отправится на свалку истории и все нормальные люди будут писать на lua
узнал формулу bj_degtorada это pi\180
Неужто в гугле разбанили?
Загруженные файлы
0
19
4 года назад
Отредактирован SсRealm
0
Давным давно,в далекой далекой галактике один хороший человек сделал для меня подобную системую Теперь у меня есть герой,который безостановочно летает по карте
Единственный минус,он может вылететь за пределы карты и карта вылетает. Поэтому поставил ограничения и все норм) И еще. По его заверению такой герой может быть только один на карте. Соблюдаю заветы.
0
29
4 года назад
0
Это точно такие же полярные координаты, ты просто развернул функцию в непосредственный код.
В коде примера ни работа с углами, ни тригонометрия, ни degtorad не нужны вообще.
0
7
4 года назад
0
Doc:
Это точно такие же полярные координаты, ты просто развернул функцию в непосредственный код.
В коде примера ни работа с углами, ни тригонометрия, ни degtorad не нужны вообще.
я знаю что я просто разверзнул код, я просто знаю что polarprojectionbj сколько ее не обнуляй она лагает и из за этого заменил на x,y она быстрее и не лагает
Чтобы оставить комментарий, пожалуйста, войдите на сайт.