Итак, господа, есть ли у нас возможность ни прибегая к всякого рода извращениям прикрепить эффект молнии от одного юнита к другому, дабы при удалении или приблежении оный эффект растягивался и наоборот(Как у Виспа из Дотана)? Ибо в триггерах позволено создать только от одной точки к другой.

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

Msey:
А если цвет молнии нужно поменять?
Делаешь несколько спелов на основе Finger Of Death с разными эффектами молний. Нужен другой эффект - удаляешь старый спел, даёшь новый и снова каст.
Если же вопрос про
native SetLightningColor takes lightning whichBolt, real r, real g, real b, real a returns boolean
В случае с даммиком никак, я думаю. :(
Можно ещё вот как. Создать БД для всех юнитов на карте, где будут записаны их Projectile Impact - Z и Projectile Launch - Z, а сами молнии делать триггерно. Тогда ничего провисать не должно, если использовать следующие формулы координат для кастера - цель:
local real x1 = GetUnitX(caster)
local real y1 = GetUnitY(caster)
local location p1 = GetUnitLoc(caster)
local real z1 = GetLocationZ(p1) + GetUnitFlyHeight(caster) + Projectile.getUnitLaunchZ(caster)
local real x2 = GetUnitX(target)
local real y2 = GetUnitY(target)
local location p2 = GetUnitLoc(target)
local real z2 = GetLocationZ(p2) + GetUnitFlyHeight(target) + Projectile.getUnitImpactZ(target)
// Projectile.getUnitImpactZ и Projectile.getUnitLaunchZ - функции написанной заранее БД.
//
// В это случае нужно вызывать RemoveLocation?
Для простого связывания юнитов (где нет кастера и цели) меняешь Projectile.getUnitLaunchZ(caster) на Projectile.getUnitImpactZ(caster).
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
13
6 лет назад
1
В триггерах есть специальная функция для движения уже созданной молнии под названием Move Lightning. В нее необходимо указать новые точки для размещения молнии. В результате этого молния будет двигаться, растягиваться и сжиматься.
1
26
6 лет назад
1
так нужно двигать его с определенной периодичностью
1
18
6 лет назад
1
Hate
таймер или триггер с 0.04 периодичностью сойдет
4
28
6 лет назад
Отредактирован PT153
4
Видел на сайте наработку с молниями на JASS, поищи, крайне неплоха.
А вот и она.
А ещё можно это сделать с помощью Finger Of Death, поставив там длительность графики на 99999., задержку графики и урон на 0., спел дать даммику, приказать даммику 1 раз скастовать молнию на указанного юнита, а потом попросту двигать даммика.
У каждого юнита есть поле Projectile Impact - Z и Projectile Launch - Z, узнать их через стандартные функции никак нельзя в JASS. Потому молнии придётся оставлять "на полу" или "в воздухе" (если прописать в координате z молнии высоту полёта юнита). GetLocationZ тоже не поможет.
Потому с даммиком всё будет "красиво". Конец молнии будет уже прикреплён Projectile Impact - Z цели. Каждый раз, когда двигаешь даммика в позицию кастера, ставишь ему
call SetUnitFlyHeight(dummy, GetUnitFlyHeight(caster) + const, 0.)
где const есть Projectile Launch - Z кастера из РО. Сам дамми должен быть летающим без ограничений в высоте полёта, а его поля, Cast Backswing, Cast Point и Projectile Launch - Z должны быть равны 0.
Таким образом если всё делать верно, то в случае с дамми ничего в воздухе висеть не будет. Синхронизировать позицию дамми можно каждые 50 мс (0.05 с), и я думаю это проще, чем синхронизировать 6 координат молнии (тут всего 3).
0
29
6 лет назад
0
А ещё можно это сделать с помощью Finger Of Death
А если цвет молнии нужно поменять?
0
11
6 лет назад
0
Ох, господа, прошу прощения. Завтра опробую предложенные вами способами и выберу лучший ответ. Заведомо прошу прощения, а дабы вам было чем заняться, порассуждайте пока на тему "динамика и провисание" в кампаниях
0
28
6 лет назад
Отредактирован PT153
0
Msey:
А если цвет молнии нужно поменять?
Делаешь несколько спелов на основе Finger Of Death с разными эффектами молний. Нужен другой эффект - удаляешь старый спел, даёшь новый и снова каст.
Если же вопрос про
native SetLightningColor takes lightning whichBolt, real r, real g, real b, real a returns boolean
В случае с даммиком никак, я думаю. :(
Можно ещё вот как. Создать БД для всех юнитов на карте, где будут записаны их Projectile Impact - Z и Projectile Launch - Z, а сами молнии делать триггерно. Тогда ничего провисать не должно, если использовать следующие формулы координат для кастера - цель:
local real x1 = GetUnitX(caster)
local real y1 = GetUnitY(caster)
local location p1 = GetUnitLoc(caster)
local real z1 = GetLocationZ(p1) + GetUnitFlyHeight(caster) + Projectile.getUnitLaunchZ(caster)
local real x2 = GetUnitX(target)
local real y2 = GetUnitY(target)
local location p2 = GetUnitLoc(target)
local real z2 = GetLocationZ(p2) + GetUnitFlyHeight(target) + Projectile.getUnitImpactZ(target)
// Projectile.getUnitImpactZ и Projectile.getUnitLaunchZ - функции написанной заранее БД.
//
// В это случае нужно вызывать RemoveLocation?
Для простого связывания юнитов (где нет кастера и цели) меняешь Projectile.getUnitLaunchZ(caster) на Projectile.getUnitImpactZ(caster).
Принятый ответ
4
11
6 лет назад
4
Итак, господа. по итогу все ответы оказались полезными. Огромное спасибо
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.