Страница 2 из 7
Добавлено: Чт май 17, 2007 10:06 am
MFBeaST
kLabMouse писал(а):
В общем: Задача очень проста на первый взгляд: Есть тогка где щас моб, есть точка куда движется моб, есть его скорость. Есть точка где стоим мы, есть наша скорость движения. Найти точку сопрекосновения с прямой движения моба.
кхм, а пусть лучше наводится по методу половинного спрямления (как ракеты

)
т.е. (x, y) = ( (x1+x2)/2, (y1+y2)/2 );
Добавлено: Чт май 17, 2007 10:11 am
piroJOKE
Да, но где тут учтена скорость, MFBeaST?
Добавлено: Чт май 17, 2007 10:19 am
MFBeaST
piroJOKE
скорость моба вобщем-то учтена в конечной точке его движения,
а собственная нигде.. если её учитывать, то как-то много заморочек
Добавлено: Чт май 17, 2007 10:31 am
MFBeaST
хм, ну можно и со скоростями поигратся:
k = (velMob / velSelf) * kMod;
if (k>1) k=1;
(x, y) = ( x1+(x2-x1)*k, y1+(y2-y1)*k );
kMod - грубо говоря с потолка, т.е. хорошо бы на время отладки метода толкнуть в конфиг и поподбирать его.. (начав с 0.5 примерно)
Добавлено: Чт май 17, 2007 3:13 pm
kLabMouse
MFBeaST
Половинное спрямление не катит, вообще. Всё дело в том что я описывал как клиент ето делает. Мы же хотим чтоб наш бот не светился. Верно? думаю все согласны что верно.
А твоя формула только добавит пляску (уже пробовалось)
В общем, как оно решается, я вычитал с книжки по физике за 8й клас. Там приведено на примере торпеды.
Только самое но осталось енмного напрячь знания по геометрии и решить такую задачу:
Предположим у нас есть треугольник АБВ, есть синусы углов А и Б а так-же длинна отрезка АБ, нам нужно найти длинну отрезка АВ имея вышшеприведённые данные.
Задача в общем-то тривиальная. Узнав длинну отрезка АВ мы имеем путь на который моб походит до соприкосновения с ним. Берём его вектор движения. И находим точку где он будет если пройдёт длинну отрезка АВ. Тем самым мы будем иметь точку соприкосновения. Теперь составляется вектор движения чара к точке соприкосновения и от длинны отрезка от чара до точки соприкосновения отнимается дистанция атака, таким образом мы будем иметь точку куда нам нужно будет походить чтоб мы могли бить маба.
ЫЫ. Много букф, верю. Да ещё и ход моих мыслей учадать очень тяжело. Но думаю справитесь.
Добавлено: Чт май 17, 2007 4:21 pm
MFBeaST
kLabMouse писал(а):
Всё дело в том что я описывал как клиент ето делает.
..невидел, ссылку не подскажешь?
kLabMouse писал(а):
Предположим у нас есть треугольник АБВ, есть синусы углов А и Б а так-же длинна отрезка АБ, нам нужно найти длинну отрезка АВ имея вышшеприведённые данные.
с такими данными берём теорему синусов:
sin B / len АБ = sin Б / len АВ,
B = 180 - A - Б,
и получаем:
len АВ = len АБ * (sin Б) / (sin(180-А-Б))
только вот что это всё значит в терминах нач.точка моба, конечн.точка моба, точка игрока я совершенно не понял ..
Добавлено: Чт май 17, 2007 5:03 pm
piroJOKE
Нарисуйте кортинки в паинте, ага?
Добавлено: Чт май 17, 2007 6:21 pm
kLabMouse
ГГ. А как ето пощитать?:
sin(180-А-Б)
Мы только знаем
sin(А), sin(Б)
Добавлено: Чт май 17, 2007 6:46 pm
piroJOKE
А знаете, если вдруг выясниться, что пакеты описывают движение мобов только на маленькое расстояние, скажем 3...5 клеточек, то имхо, в этом случае синусы ну точно считать смысла не будет....
Добавлено: Чт май 17, 2007 7:01 pm
MFBeaST
kLabMouse писал(а):ГГ. А как ето пощитать?:
sin(180-А-Б)
ну.. акрсинусы ж есть? (незнаю точного названия перловской ф-ии)
sin(180-arcsin(sin(А))-arcsin(sin(Б)))
как ты точку В определяешь-то? это пересечение нормали из точки А на прямую движения моба? вроде ж нет .. (если да, то для прямоугольного треугольника все формулы упрощаются)
Добавлено: Чт май 17, 2007 7:03 pm
piroJOKE
kLabMouse писал(а):я описывал как клиент ето делает
Эээ, а напомни в 2х словах, пожалуйсто!
ЗЫ: Ушел читать геометрию; вот заодно и оцению, насколько я отупел с этим RO.
Добавлено: Чт май 17, 2007 9:16 pm
piroJOKE
Кстати о птичках. А как соотносятся ваши, господа, вычисления
с такими пунктами конфигурации OpenKore:
attackDistance 1.5
attackMaxDistance 2.5
Ы?
Добавлено: Чт май 17, 2007 9:48 pm
kLabMouse
piroJOKE
Яж уже писал. Читай вышше.
Добавлено: Чт май 17, 2007 11:06 pm
piroJOKE
Если честно, я этого в упор не нашел (я про attackDistance и про то, как это делает клиент).
Зато, успел перебрать в голове несколько граничных вариантов,
и пришел к выводу, что фигню вы затеяли, господа.
На мой взгляд, при достаточно небольших отрезках, которыми движеццо моб, всё можно свести к трем случаям - выбор его начальной точки движения, выбор его конечной точки движения и... "стоять на месте, нихера не делать N милисекунд".
Подчеркиваю, при небольших отрезках.
Подчеркиваю, именно выбор алгоритма (а не тупо один из них на все случаи жизни).
Добавлено: Пт май 18, 2007 9:11 am
MFBeaST
piroJOKE
про attackDistance было тут:
kLabMouse писал(а):Узнав длинну отрезка АВ мы имеем путь на который моб походит до соприкосновения с ним. Берём его вектор движения. И находим точку где он будет если пройдёт длинну отрезка АВ. Тем самым мы будем иметь точку соприкосновения. Теперь составляется вектор движения чара к точке соприкосновения и от длинны отрезка от чара до точки соприкосновения отнимается дистанция атака, таким образом мы будем иметь точку куда нам нужно будет походить чтоб мы могли бить маба.
как именно определяется т.В я не понял ..
т.е. всего алгоритма на знаю
kLabMouse
угол В прямой? (да/нет)