В общем, имеется 6 float координат в игре: PlayerPos_X, PlayerPos_Z, PlayerPos_Y и еще 3 (я так и не узнал что это) Pos_X, Pos_Z, Pos_Y Суть такова, есть байты данных, которые передаются в игре на сервер, не могу понять за что отвечают вторые три координаты, первые три координаты - это позиция игрока на карте, вторые три координаты по значению очень близки к позиции игрока, но не равны (вторые координаты генерируются во время атаки, в зависимости от направления куда атакуешь в 3D пространстве). Вообще, данные координаты относятся как то к атаке (то-ли смещения взгляда, то ли вектор куда игрок атакует). На сервере есть вот такая функция, собственно, с помощью нее и можем выяснить что за вторые координаты: Pos_X, Pos_Z, Pos_Y:
float res_x = Pos_X - PlayerPos_X;
float res_z = Pos_Z - PlayerPos_Z;
float res_y = Pos_Y - PlayerPos_Y;
float result = atan2f(res_x, res_y) * 57.295776 * 0.5;
if(result < 0.0)
result = result + 180.0
int viewoffset = result;
Код примерно такой как указано сверху, одно понятно точно, оно вычисляет смещение взгляда игрока, однако, что в таком случае вторые 3 координаты? Это смещение камеры или что? Разъясните что тут происходит, он исходя из координат игрока на карте и вектора куда атакует игрок получает смещение его взгляда чтобы потом понять находится ли моб в диапазоне viewoffset с разницей в -30 и +30, то есть получается мобы которые попадают в диапазон между этими значениями viewoffset будут задамажены? Правильно ли я всё понял?
z компонента координаты не используется в примере совсем. 57.295776 это 180 деленное на пи.
поэтому, atan2f(res_x, res_y) - вычисляет угол в радианах между двух векторов, умножив на 57.3 получим в градусах. Зачем там умножают на 0.5 - не знаю, может там что то ещё есть. Сама функция atan2f возвращает в диапазоне [-pi, +pi], поэтому там и прибавляют 180, что бы перевести в диапазон от 0 до 360, но из за умножения, получается от нуля до 90 и от 180 до 270. Такой себе крест-накрест. Где там Ваше -30 +30 - не знаю.
Скорее всего - Posx - это координаты его оружия.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, у меня такая проблемаМне нужно узнать число букв в массиве
Пытаюсь собрать пример скриншота на GDI+ на С++ через clexe Вот пример который я пытаюсь собрать