-
Автор темы
- #1
Здарова, начал делать бота и столкнулся с такой проблемой, как правильно вычислять углы на которые нужно повернуть камеру.
Углы вычислил, но чтобы камера плавно поворачивалась, не удаётся сделать.
Углы вычислил, но чтобы камера плавно поворачивалась, не удаётся сделать.
C++:
void Utils::TurnToCoord(const Vector3& target, const float& smooth) {
Vector3 vecPosPlayer = sdk::LocalPlayer::getPosition();
Vector2 vecAngCamera = sdk::camera::getAngle(), vecCalculate;
float SmoothPitch = 0.f, SmoothYaw = 0.f;
vecCalculate.x = std::atan2(-(target - vecPosPlayer).Length(), (target - vecPosPlayer).z) * 0.1f;
vecCalculate.y = std::atan2(-(target - vecPosPlayer).y, -(target - vecPosPlayer).x);
SmoothPitch = (vecCalculate.x - vecAngCamera.x) / smooth;
float diffYaw = vecCalculate.y - vecAngCamera.y;
if (diffYaw > M_PI) {
diffYaw = (vecCalculate.y + ((diffYaw > 0.01f || diffYaw < -0.01f) ? vecAngCamera.y : -vecAngCamera.y));
SmoothYaw = diffYaw / smooth;
if (vecAngCamera.y < -0.01f && diffYaw > 0.01f)
SmoothYaw = -SmoothYaw;
}
else if (diffYaw < -M_PI) {
diffYaw = (vecCalculate.y + ((diffYaw > 0.01f || diffYaw < -0.01f) ? vecAngCamera.y : -vecAngCamera.y));
SmoothYaw = diffYaw / smooth;
if (vecAngCamera.y < -0.01f && diffYaw > 0.01f)
SmoothYaw = -SmoothYaw;
}
else
SmoothYaw = diffYaw / smooth;
sdk::camera::SetVertical(vecAngCamera.x + SmoothPitch);
sdk::camera::SetHorizontal(vecAngCamera.y + SmoothYaw);
}
На 24 точке видно, что персонаж начал кружиться по кругу, когда пытался дойти до неё