Мне нужен прыжок по дуге что бы работало на любое расстояние к примеру по формуле " свободное падение тел " (у меня прыжок получается по дуге только на определенные расстояние)
P.S. Желательно на GUI, зарание спасибо :)

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

По идиотски, но работает (математика 7 класс)
Caster = юнит, применивший скил
PointCaster = позиция кастера
PointTarget = точка скила
PointMiddle = Расстояние между PointCaster и PointTarget делить на 2 (середина прыжка, где будет его максимальная высота, потом снижение)
RealDistance = 0 (расстояние, на которое юнит будет двигаться каждую 0.01)
RealHeight = 0 (высота)
Включить Timer, который зазвонит через 0.01 секунд

В таймере:
PointCasterNow = позиция Caster
PointMove = PointCasterNow смещение на RealDistance
Двигать Caster в PointMove
RealHeight = корень из RealDistance (сама формула)
Установить высоту Caster как RealHeight
*Если расстояние между PointMove и PointMiddle = 0
-То,
RealDistance = RealDistance - 1
-Иначе,
RealDistance = RealDistance + 1 (или сколько хочешь)
*Если расстояние между PointMove и PointTarget = 0
-То,
Пауза Timer
-Иначе,
-
Утечки сам удалишь.
Ну или иначе вот сама формула на джассе

function ParabolaZ takes real h, real d, real x returns real
return (4 * h / d) * (d - x) * (x / d)
endfunction
h - максимальная высота в прыжке на середине расстояния (x = d / 2),
d - общее расстояние до цели,
x - расстояние от исходной цели до точки, где следует взять высоту по параболе.

У меня в принципе тоже самое.

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
4
26
7 лет назад
Отредактирован Hate
4
это не стол заказов
либо помогаем доработать, либо ждите добрую фею
0
18
7 лет назад
Отредактирован Maniac_91
0
Возможно, эта статья и ещё одна статья помогут.
0
32
7 лет назад
0
Формула параболы лежит в библиотеке функций, двигать юнита таймером знаем как? Нет - марш читать статьи.
0
21
7 лет назад
Отредактирован Raised
0
Тут хорошо расписан человеческий способ. Хочешь GUI - используй арифметику. Правда, это сама боль...
4
19
7 лет назад
4
Больно осознавать, что это школьная геометрия, а у тебя с ней проблемы. Но такова жизнь.
Тебе нужно придумать какую то там формулу, при которой, через ряд делений/умножений, зависимых от расстояния, будет определено значение, которое будет отниматься от значения прибавляемой юниту высоты (изначально 50, и до середины прыжка оно должно достигать 0, чтобы дальше высота плавно прибавлялась в минус).
Но ты можешь не париться и сделать как у Сларка в доте:
Если расстояние меньше N% от максимального, то прибавлять столько высоты, иначе другой иф. И так около четырех ифов, при которых будет угловатая, но дуга.
0
29
7 лет назад
0
От 0 до 1 по Х, от 0 до 0.25 по У. Та же самая что и в формуле параболы в библиотеке.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.