Помогите понять в чем проблема, пожалуйста -.-
Снаряд создается с небольшим смещением от героя(правее или левее) и летит по дуге в точку каста.
Смещение = 45 либо -45(рандомно), это же и поворот снаряда исходный.
По формуле мана снаряда устанавливается как = значение, которое должно вычитаться от его текущего поворота, чтобы он собственно летел по дуге, поворачиваясь.
Так вот, почему то финальный угол, который должен быть равен +-90(типа полный поворот снаряда к концу пути = дуга), в итоге равняется 115(где то при 1000 расстояния), а сам снаряд, кажется, долетает расстояние до точки каста, но не формирует полную дугу - чем дальше точка каста. Т.е. он умирает левее или правее точки каста(на глаз, где то на 250-500 от точки каста, при расстоянии в 2000).
Я думаю дело в неверных расчетах с 3.14, но что не так?
Запуск:
Движение(каждые 0.03):

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

Кстати можно двигать так:
скрины формулы
пример с топорами
движение по эллипсу, Rx и Ry отличаются
есть еще формулы по ссылке и ссылке но здесь больше сложностей
есть форму скорпа
function geoArc takes real wayAbsolute returns real
    return sin((bj_PI / 2.0) * wayAbsolute)
endfunction

function GeoArcBetweenReal takes real wayMin, real wayMax, real wayNow returns real
    return geoArc((wayNow-wayMin) / (wayMax-wayMin))
endfunction

function GeoArcRelative takes real wayMin, real wayMax, real wayNow, real resultMin, real resultMax returns real
    return (GeoArcBetweenReal(wayMin,wayMax,wayNow) * (resultMax-resultMin)) + resultMin
endfunction
вызываешь GeoArcRelative(тут начало отсчета, тут конец отсчета, тут место где находится сейчас, тут минимальный нужный результат, тут максимальный нужный результат) возвращает значение между последними двумя относительно того, как далеко wayNow переместилась между первыми двумя
вобще это в 2D, а надо в 3D - добавь полярные координаты, или сделай отдельно для каждого измерения...
ну у тебя есть Z допустим пол это 50, потолок (самый верх параболы) - это 300
юнит идет от точки 0 до точки 1000, вот он идет, идет, где он щас находится пусть будет X
set unitZ = GeoArcRelative(0, 1000, X, 50, 300)
wayMin - минимальная расстояние (можно поставить ноль)
wayMax - максимальная точка (ставите нужный размер длины дуги)
wayMin и wayMax образуют отрезок (длину дуги)
wayNow - текущее положение точки
resultMin - минимальная высота
resultMax - максимальная высота
карта
еще есть бросок Tiny из доты и бросок из Пуджа Варс (надыбил на форуме). Код очень отличается от типичной параболы у нас на сайте в алгоритмах, там за основу счетчик берется. Мне понравился бросок из Пуджа Варс. Все эти примеры скинул в карту Только в наработке с Toss Tinny, которую скинул, есть небольшая накладка, там у него два скила (спешил и не посмотрел), и нужно поменять id-приказ у канала, тогда будет все ок (не знаю, почему дал ему вторую, мне казалось крута сравнить, щас не кажется)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
22
6 лет назад
Отредактирован PROSHELDOTU
0
С такими названиями локалок как вообще можно нормально работать)
Там даже профи запутается, особенно, если будет строчек раза в 3 больше
Этот комментарий удален
0
19
6 лет назад
0
Clamp:
типа такого?
Да, прямо как у Дианы)
Maniac_91:
Вместо округления pi попробуй перевести в радианы 180 градусов (как-то так: "DEGTORAD(180)").
Все равно откос.
0
30
6 лет назад
0
Вечером если будет минутка - накидаю двигалку.

большинство функций мне приходится искать на гуи и конвертировать
JNGP на что с его Function List?
0
19
6 лет назад
0
Clamp:
JNGP на что с его Function List?
Короче говоря, это дело привычки. Мне не особо вперлось БЖшки раскрывать, а так, все возможные утечки я устраняю.
Вроде БЖ максимум работу замедляет своими вечными пересылками, но утечек там никаких нет?
Вот ты говоришь "функшен лист", но чтобы найти там функцию, ты должен хотя бы примерно знать её название)
Я потихоньку пишу себе в шапку карты различные функции и должен сказать, что мне очень неудобно ориентироваться в чистом коде, но возможно я таким путем привыкну и начну писать по пацански перса в 1 триггер)
0
23
6 лет назад
0
сдались вас... я вот не учил анг. языка но варик понимаю потому что я изучил основа программирование за 1 месяц а дальше уже можно сотворить....
а если будете тянуть типо не знаете как называете функция то вы с какого языка пришли?
геттеры сеттеры функции основа поучить
0
19
6 лет назад
0
pro100master:
Но я же не об этом задал вопрос :\
0
23
6 лет назад
0
Darknessay, единсвеный если ты учил геометрия то изи решения
3
30
6 лет назад
3
Смещение = 45 либо -45, это же и поворот снаряда исходный.
Что это значит? Ты уравниваешь 45 единиц длинны и 45 градусов поворота?
Лучше нарисуй схему с указанием всех углов и зависимостей величин, мб и сам решишь в процессе.
0
27
6 лет назад
0
Clamp, тоже не понял, когда мне говорил.
0
19
6 лет назад
Отредактирован Darknessay
0
Clamp:
Поясню:
1- Берется угол АБ( от кастера к таргету)
2- Под углом АБ+45, смещенно на 50 ед. расстояния создается снаряд(С). Снаряд создается с поворотом ЛИЦА = СБ+45 сразу - для удобства, потому что я понимаю, что иначе угол будет не +45.
Так что про угол АБ забываем, чтобы не запутываться. Дальше используем только СБ.
3- Снаряд стоит в точке С, лицом повернут по углу СБ+45.
4- Снаряд начинает двигаться в направлении собственного лица. Каждый тик таймера 0.03, снаряд сдвигается на 70 ед. и должен постоянно поворачивать на N угла(поворота) для того, чтобы его траектория образовала дугу.

Нужно вычислить 2 значения:
1 - реал, который будет отниматься от угла поворота снаряда каждый тик таймера, для того чтобы снаряд летел по дуге.
2 - реал времени, который понадобится снаряду для того, чтобы долететь до точки Б по дуге.
ДА ЧТО ЗА?
Не могу новую картинку прикрепить к тому комменту -_-
Короче да, мне нужна кушка Дианы. Только я не помню, оно летит в точку каста, или там фикс. расстояние? Вроде в точку каста. Если да, то да, кушка Дианы.
Разве что, у меня снаряд создается не в самом герое, а чуть рядом, но мы всё равно начинаем считать всю фигню относительно позиции снаряда(и угла СБ соответственно), а не относительно АБ.

Блин, вот я гомункул. "Дуга, которая должна образоваться" - она, конечно же, не между АБ, а между СБ должна образоваться такой формы, ибо АБ уже не учитывается после спавна снаряда. Просто в паинте я не смог бы "наклонить" сплюснутое кольцо

Если честно, то я уже запарился это обьяснять, ибо не знаю как еще проще обьяснить:
(Предыдущие слова не учитывайте, по новой)
Снаряд вылетает под углом АБ+45, за каждый тик таймера должен поворачивать(угол его поворота должен отниматься), чтобы в конце пути он ударился в точку Б(т.е. его угол ПОВОРОТА в конце должен получиться АБ-45).
Получается, нам нужно вычислить время, за которое снаряд пролетает от А до Б >>ПО ДУГЕ<<(дуга длиннее прямого полета, т.е. и времени чуть больше), потом на основе этого времени выдать снаряду лайфтаймер и получить как раз таки значение угла, которое будет отниматься для образования самой дуги в полете.
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.