Перейти к содержанию

Blockpost Aimbot


Рекомендуемые сообщения

Здравствуйте, дорогие друзья, пользователи сего замечательного форума. Возникла такая нестандартная проблема, к решению которой я был не готов.
Суть вот в чем: мы имеем стандартные для всех игр значения поворота камеры по X и Y, как и всегда.
Я делаю аимбот для простенькой игры на Unity под названием BlockPost.
С поворотом по Y проблем никаких нет, все работает хорошо, значения для поворота находятся в диапазоне [-90:90]

Самое интересное начинается с поворотом по X
Дело в том, что данная игра для поворота использует два диапазона -> [-360:0] и [0:360]. То есть, если мы ведем мышку влево, то заполняется диапазон от 0 до - 360, если же мы поведем мышку вправо, то значение будет возрастать от того, где мы остановились, допустим, от -150 до 0 и продолжит возрастать до 360, а если же зайти за нижнюю планку (за -360), то значение будет равно -1. 

Проблема такова, что для вычисления угла я использовал функцию c++ atan2() дает угол в радианах [-Pi:Pi] -- что в данном случае не подходит.

Так же я знаю, что для игры значения поворота по X -[число] и [число] идентичны ( то есть, отрицательное число или положительное не важно, камера при обоих значениях будет смотреть в одном направлении)

Прошу вас помочь в столь нелегкой ситуации, заранее благодарен.

Код функции прилагаю:

Спойлер

void AimAt(float& rx,float&ry,Vector3* mypos,Vector3* targetpos)
{
	Vector3 deltaVec = { mypos->x - targetpos->x,mypos->y - targetpos->y,mypos->z - targetpos->z };
	float deltaVecLenght = sqrt(deltaVec.x * deltaVec.x + deltaVec.y * deltaVec.y + deltaVec.z * deltaVec.z);
	float pitch = -asin(deltaVec.z / deltaVecLenght) * (180 / PI);
	float yaw = atan2(deltaVec.y,deltaVec.x) * (180 / PI);

	ry = pitch;
	rx = yaw;
}

 

 

Изменено пользователем KRYPTOPUNK
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.