Кучу времени убил на это, страдая всякой ерундой, пытался раза 4 поискать в инете хоть какие-нибудь наработки, но видимо плохо ищу
В общем, как сделать снаряд, который игнорил бы впадины, ускорялся/замедлялся в зависимости от дуги и поворачивал бы свой носик на нужный градус (SetUnitLookAt)?
Может у кого есть наработка или ссылка?
upd я пока не в состоянии разобрать вектор и буду очень благодарен, если ответ будет через хэш-таблицу
1.26а

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

Нужен мемхак или рефордж, чтобы поворачивать эффект по всем направлениям Yaw, Pitch, Roll
Всё остальное костыли 2005 года, оставьте их там же
(я про ту самую модель даммики с 360 анимациями для всех поворотов)
И разумеется 100% делать через эффект, никак юнитов

Тоже самое возможно на 126, 127, 128, просто возьмите это
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
27
3 года назад
Отредактирован rsfghd
0
Bergi_Bear,
Тоже самое возможно на 126, 127, 128, просто возьмите это
Решил просто перенести свои триггеры сюда, но оно пишет, что я какие-то блоки упустил и не даёт запустить карту
раскрыть
Загруженные файлы
0
32
3 года назад
0
а pjass ты поставил последний?

Попробуй без переноса сохранить чистую карту для начала
0
27
3 года назад
Отредактирован rsfghd
0
Bergi_Bear, сохраняло спокойно, а конкретно мой триггер - нет
Это из-за cjass'a что ли?
Вот даже отключил свои триггеры, снова сохранил и всё норм

upd м, нет, вру, не норм
Карта хоть и сохраняется без ошибок при отключении триггеров, но запустить по прежнему нельзя, в главное меню кидает. Удаление триггеров так же не помогло, хотя я ничего не трогал больше
0
32
3 года назад
0
Сиджас в последнем мемхаке наладили вот /nocjass стоят везде. Ты точно меня хорошо понял про pjass?
2
27
3 года назад
2
0
27
3 года назад
Отредактирован rsfghd
0
Bergi_Bear, отсюда качал pjass xgm.guru/p/wc3/easymem
Ошибка с блоком была из-за отключённого AdicParser'a, но в мемхаке включить его низя, иначе другая ерунда вылезет
МрачныйВорон, пасиб большое, теперь хоть через впадины нормально перелетает)
Однако мне всё равно интересно как замедлить/ускорить снаряд до/от середины полёта и можно ли как-нибудь эту силу прикрутить к параболе?
4
27
3 года назад
Отредактирован MpW
4
На скорую руку составил. Точно не могу сказать, что правильно. Но логически должно быть верным. Хочется на сие творение посмотреть)
Раскладываем скорость на векторы:
Vx=1,Vy=1,Vz=1 - изначально скорость нулевая, тк ракета еще не вылетела. Когда мы запустим, наша скорость будет равна 1. Скорости придает ускорение.
a=0 - ускорение. Изначально оно равно нулю, таймером каждую секунду увеличиваем наше ускорение. Когда снаряд достигнет середины дуги, или половины пройденного пути, тогда уже наше ускорение превращается в понижение. Будет постепенно понижаться до нуля.
Ux,Uy,Uz - тек положение нашего снаряда
каждую секунду тикаем таймером:
изменяем нашу скорость. Вот здесь я не уверен. Надо самому потестить, устал. Но взял из учебников физики. av-physics.narod.ru/mechanics/acceleration.htm простенькая формула.
Vx = Vx + at
Vy = Vy + at
Vz = Vz + at
изменяем наше положение снаряда. черт, забыл углы. ведь координаты, а тут углы. забыл относительно чего углы брать. Углы надеюсь сможешь понять как, а то лень через арккосинус
раскрыть
Ux = Ux + Vx * Sin(theta) * Cos(phi)
Uy = Uy + Vy * Sin(theta) * Sin(phi)
Uz = достаем нужную высоту из параболы (Uz + Vz * Cos(theta) )
//увеличиваем скорость
a = a + 1 - какую вам надо
Загруженные файлы
2
21
3 года назад
Отредактирован scopterectus
2
Сам недавно делал способность с проджектайлом. Можно сделать без векторов и всяких косинусов и синусов. Код на Lua и Reforged, но тут главное арифметика, а не функции:
    -- arrowX/Y/Z - текущее положение снаряда
    -- arrowTargetX/Y/Z - куда должен лететь снаряд
    -- 32.8125 - скорость снаряда (расстояное, которое проходит снаряд за один тик таймера)

    local dx   = arrowTargetX - arrowX
    local dy   = arrowTargetY - arrowY
    local dz   = arrowTargetZ - arrowZ
    local dist = math.sqrt( ( dx ^ 2 ) + ( dy ^ 2 ) + ( dz ^ 2 ) )

    arrowX = arrowX + 32.8125 * ( dx / dist )
    arrowY = arrowY + 32.8125 * ( dy / dist )
    arrowZ = arrowZ + 32.8125 * ( dz / dist )

    BlzSetSpecialEffectX( arrow, arrowX )
    BlzSetSpecialEffectY( arrow, arrowY )
    BlzSetSpecialEffectZ( arrow, arrowZ )
Но тут правда прямолинейное движение.
0
27
3 года назад
Отредактирован rsfghd
0
МрачныйВорон,
a = a + 1 - какую вам надо
хе, я бы и сам справился с ускорением/замедлением в полёте, но дело в том, что я не знаю на какое значение нужно замедлять/ускорять снаряд, если будет через твой пример, то снаряд может замедлиться не долетев до середины, в итоге он так и повиснет в воздухе, потому что середину не перелетел, где должно было начаться ускорение
раскрыть
Загруженные файлы
1
21
3 года назад
1
rsfghd, это нужно будет рассчитывать в зависимости от расстояния. Например, задаёте изначальную скорость и умножаете на процент пройденного пути. В итоге, когда снаряд долетит до конца пути - получит все 100 % ускорения. Или наоборот, тогда снаряд в конце будет иметь нулевое ускорение.

Ну или придумать свою формулу. Всё зависит от конкретного случая.
0
32
3 года назад
0
Как насчёт юзать аксид бомбу и не парится?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.