Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Движение по параболе
У меня реальные траблы в плане написания параболического движения юнита. Пытался адаптировать найденные тут формулы, но результат неудовлетворительный (в зависимости от дальности юнит падает то раньше, то позже). Параметры вприцнипе такие: макс расстояние = 1300, смещение в отношении х и у происходит на 15 каждые 0.02 секунды. Проблема в вычислении z. Кто-нибудь может натолкнуть на/дать правильную формулу, что бы юнит не летал "по треугольнику", как это происходит у меня сейчас?) |
04.03.2012, 22:44 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vadik29
Choice Battle 1.6а
offline
Опыт:
15,845Активность: |
h - максимальная высота в прыжке на середине расстояния (x = d / 2), d - общее расстояние до цели, x - расстояние от исходной цели до точки, где следует взять высоту по параболе. |
04.03.2012, 23:00 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Vadik29, вопрос - и как я рассчитаю максимальную высоту, не зная угол? Мне известно только лишь расстояние между точками.. |
04.03.2012, 23:22 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
расчитываем шаг расстояние делённое на шаг тем самым получаем число раз которым выполнять будем цикл
далее поднятие максимальная высота задаётся тобой,т.е на середине он должен достигнуть максимальной высоты
кол-во раз делённое на 2
формула строится тобой при твоих данных
надеюсь помог |
04.03.2012, 23:44 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Смотри мою статью по ссылке в подписе,там описывается работа с функцией параболы |
04.03.2012, 23:47 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Extremator
offline
Опыт:
39,403Активность: |
Vampirrr:
если у тебя есть точки то ты можешь получить:
|
04.03.2012, 23:50 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DualShock
offline
Опыт:
5,023Активность: |
((код jass
library ParabolicMovement
function ParabolaZ takes real h, real d, real x returns real
return (4 * h / d) * (d - x) * (x / d) endfunction endlibrary
)) Если ты не понимаешь как пользоваться формулой, то погляди на картинку: |
05.03.2012, 00:34 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Msey
????
offline
Опыт:
67,346Активность: |
это несложно
((кат код
))
хотя большое кол-во кода меня иногда запутывает |
05.03.2012, 01:12 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
DualShock, Extremator, копетаны
Nerevar, Klop, Vadik29, Msey, оно конечно все хорошо с параболой, но т.к. пытаюсь реализовать через банальную физическую формулу y = y0+V0t-5t^2, хотелось бы уже добить этот вариант. На данный момент я знаю, что скорость по проекции X равна 15 (это на сколько я перемещаю юнита каждые 0.02 секунды). Следовательно, по проекции Y скорость равна 26 (это если представить, что угол равен 60 градусам). Исходя из этого, я имею полное право воспользоваться вышеуказанной формулой, правильно? Проблема заключается в том, что юнит на самом деле кидается как будто при 10 градусах (ну хотя бы летит как будто по параболе), но никак не при 60. При попытках подстановки значений о параболе никакой речи и не шло - юнит постоянно поднимался. |
05.03.2012, 01:31 | #9
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|