PDA

Просмотр полной версии : Создаем боевое построение группы ботов.


Python
19.04.2011, 04:14
Всем доброго времени суток!
Я создал эту тему в поисках человека не забывшего геометрию.

Идея:
При управлении группой ботов сталкнулся с одной неприятной особенностью.
Не зависимо от их способностей, если пати ботов из шести персонажей бьет мобов по ассисту с пати-лидера, то они неизбежно бегают двумя кучами (контактники, и дистанционники).
Конечно куча персов бьющих одних и тех же мобов привлекает внимание.
Да и при прохождении ХХ это не лучший вариант.

Отсюда появилась необходимость рассредоточить их по территории в определенном боевом порядке относительно пати-лидера.
Статично привязать положение каждого перса к ПЛу - плохая идея,
т.к. персонажи могут поворачиваться и если на передовой у нас обор, то при движении назад мы тараним мобов жрецом. :)

Естественно ориентирование боевого построения должно опираться не только на координаты пати-лидера,
но и на угол его поворота в двумерном пространстве (х,у).
Вот собственно мы и подошли к задаче.

[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Входные данные.
1) Мы располагаем координатами пати-лидера (X,Y).
2) Его направление задано координарами вершины зеленой стрелки (X1,Y1), на окружности радиусом R = 1
Расстояния между центром пати (синей точкой) и зелеными обозначим как L1, L2, L3, L4.

Задача:
Требуется расчитать четыре формулы для вычисления координат зеленых точек 1,2,3,4 относительно пати лидера (красная точка).


Заранее благодарю за ответы и участие в теме.

.jerry
19.04.2011, 10:17
проблема то в чем ?

Python
19.04.2011, 10:30
Требуется расчитать четыре формулы для вычисления координат зеленых точек 1,2,3,4
Проблем нет. Нужны только лишь формулы расчета координат.
:)

ImpAsh
19.04.2011, 11:23
И эта проблема имела место быть в 3 часа ночи:eek:

Формулы просты, просто разбей каждого со-партийца на треугольники.

Но возникает вопрос в следующем, как узнать направление ПЛ, дабы со-пати шли именно позади ПЛа.:notme:

Kitsune
19.04.2011, 11:45
Нахождение координаты точки на окружности заданного радиуса по заданному углу:

Point newPoint = new Point((int)(radius * Math.Sin((Math.PI * angle) / 180)) + center.X,
-(int)(radius * Math.Cos((Math.PI * angle) / 180)) + center.Y);


radius - радиус, в данном случаи расстояние от точки А, до точки Б.
angle - угол, относительно которого распоралагается Б от А.
center - координаты точки А.

Формула для системы координат:

0,0----------X
|
|
|
|
Y

В свою перевести не составит труда.

Python
19.04.2011, 20:49
просто разбей каждого со-партийца на треугольникиХорошая идея! Я и позабыл про этот старый добрый школьный метод. Нужные радиусы и углы посчитал.

TBX1n, спасибо за формулу.
Думаю сегодня боты больше не будут бегать стадом.
:)