Кто подскажет как раскрыть эту функции. можно ли в ней углы как то плюсовать.
local unit Unit = CreateUnitAtLoc(GetOwningPlayer(caster),UnitId, GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(PolarProjectionBJ(GetSpellTargetLoc(), 150.00, ( AngleBetweenPoints(GetSpellTargetLoc(), GetUnitLoc(GetSpellAbilityUnit())) + 90.00 )), 150.00, ( AngleBetweenPoints(GetUnitLoc(GetLastCreatedUnit()), GetSpellTargetLoc()) + 90.00 )), bj_UNIT_FACING )
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован MadDemon
local unit caster = GetSpellAbilityUnit()
local location cas = GetUnitLoc(caster)
local location tar = GetSpellTargetLoc()
local real d = bj_RADTODEG * (Atan2(GetLocationY(cas) - GetLocationY(tar),GetLocationX(cas) - GetLocationX(tar)))
Точка создания Юнита1
local real x = (GetLocationX(tar) + 150 * Cos((d+90) * bj_DEGTORAD)) - 300 * Cos((d+180) * bj_DEGTORAD)
local real y = (GetLocationY(tar) + 150 * Sin((d+90) * bj_DEGTORAD)) - 300 * Sin((d+180) * bj_DEGTORAD)
Точка создания Юнита2
local real x2 = (GetLocationX(tar) + 150 * Cos((d-90) * bj_DEGTORAD)) - 300 * Cos((d-180) * bj_DEGTORAD)
local real y2 = (GetLocationY(tar) + 150 * Sin((d-90) * bj_DEGTORAD)) - 300 * Sin((d-180) * bj_DEGTORAD)
Появление 1 юнита
local unit Unit = CreateUnitAtLoc(GetOwningPlayer(caster),Unit2Id, Location(x, y), d + 90)
Появление 2 юнита
local unit Unit2 = CreateUnitAtLoc(GetOwningPlayer(caster),Unit2Id, Location(x2, y2), d - 90)
Обнуление переменных
set caster = null
set Unit = null
set Unit2 = null
set d = 0
set x = 0
set y = 0
set x2 = 0
set y2 = 0
call RemoveLocation (cas)
call RemoveLocation (tar)
endfunction
Отредактирован nazarpunk
Отредактирован Nevermourne
Почему не написать все то же самое в одну строку?
Да, может строка выйдет длинновата, но ты же сам знаешь что это просто точка со смещением, и менять в ней всего 2 значения...
Лично я бы сократил так:
Отредактирован nazarpunk
Я просто спросил почему ты считаешь такой вариант более комфортным.
Отредактирован nazarpunk