Всем привет !
Пишу бота для теры и вот столкнулся с проблемой.
Есть координаты камеры X-Y изменив их меняется положение камеры (логично) хотел спросить как повернуть камеру на ближайшего монстра ?
Зафиксировать камеру можно просто заморозив значение , а вот как зафиксировать на ближайшем монстре или растении не знаю (( уже 4 день мучаюсь если кто знает подскажите или намекните буду благодарен ....
можно вычислить нужные цифры по координатам(я так делаю).
нужно как бы нарисовать треугольник(например прямой(или как он там называется)) по координатам, и вычислить градус угла(методом тыка узнаешь, какого). для вычисление по горизонтали в вертикали два раза я делаю, то есть как бы рисую этот треуглоьник в двух мерной системе координат
можно вычислить нужные цифры по координатам(я так делаю).
нужно как бы нарисовать треугольник(например прямой(или как он там называется)) по координатам, и вычислить градус угла(методом тыка узнаешь, какого). для вычисление по горизонтали в вертикали два раза я делаю, то есть как бы рисую этот треуглоьник в двух мерной системе координат
тьфу ))) а я пытался передать координаты ближайшего монстра ))
Я один заметил что в игру есть адрес отвечающий за передвижение персонажа ? если он стоит = 0 если бежит =1 если назад = 2 бежит в лево = 5 если в право = 4 и так далие ... или я не один такой ? и изменив значение с 0 на 1 он побежит
можно вычислить нужные цифры по координатам(я так делаю).
Уже давно в сфере программирования ну руки не доходили до написания ботов вот решился начать ... не туда понесло )) а по другому не как ? или подскажи как его там вычислять ? если не секрет
По-хорошему, надо цеплять дебаггер, отлавливать методы, которые поворачивают камеру, заставляют игрока бежать, и т.д. и передавать данные в них
тогда и меньше шансов, что отловят и более надежно выходит
Хорошо вот допустим мои координаты -3245 -1246 546 и вот допустим координаты монстра стоящего рядом - 3216 -1232 543
как мне повернуть к нему камеру если положение камеры по горизонтали почти не меняется это примерно такое значение 4246367457 - 4 Bytes [Nan - Float] может ты знаешь ?))
Начнём с того что положение камеры меняется, ты должен был заметить что значение камеры как бы "наматывается" когда ты делаешь полный оборот(360°). Это первый признак неверного размера, проще говоря используй в адресе камеры 2 Byte. Значение будет от 0 - 65536, так ты получишь точный диапазон поворота камеры(дальше пригодится).
Что касается поворота камеры к монстру, для этого нужно приравнять направление игрока(камеры) к направлению моба.
Вспоминаем уроки:
Код:
double player_x = 80;
double player_y = -80;
double mob_x = 0;
double mob_y = 0;
double A = Math.Atan2(player_y - mob_y, player_x - mob_x) / Math.PI * 180;// получаем угол между точками(нужное направление)
double B = Math.Round(Math.Sqrt(Math.Pow(mob_x - player_x, 2) + Math.Pow(mob_y - player_y, 2)));//дистанция между точками(дистанция до моба)
A = (A < 0) ? A + 360 : A; //Без этого диапазон от 0...180 и -1...-180
Console.WriteLine("Direction: " + A);
Console.WriteLine("Distance: " + B);
Теперь зная угол направления на объект(монстра), нужно повернуть игрока(камеру) в данном направлении. Как я указал выше теперь мы имеем точное значение камеры(0 - 65536), но нам нужно приравнять значение угла в градусах. Всё просто, нужно максимальное значение камеры(65536) разделить на максимальное значение угла(360)
65536 / 360 ~ 182 и получаем множитель который будем использовать для корректного значения камеры в градусах.
Ну и собственно итог: угол направления игрока(камеры) = угол между игроком и монстром, умноженный на 182(самое близкое значение).
Пример: