Рассчитайте радианы, чтобы иметь юнит игрока - от игрока (X, Y) до юнита (X, Y) - PullRequest
0 голосов
/ 11 января 2020

С учетом Player.X и Player.Y, а также Unit.X и Unit.Y, какова формула для вычисления правильного количества в радианах, к которому игрок смотрит, так что игрок смотрит прямо на юнитов? x, y position ..

Минимальные радианы - 0, максимальные радианы - ~ 6,3 (360 градусов) для радиан в игре, которую я моддирую в C ++.

Пример:

Player.x = -9000
Player.y = -150

Unit.x = -8950
Unit.y = -132

Я не очень хорош в математике, поэтому спасибо заранее!

1 Ответ

0 голосов
/ 11 января 2020

Если вы используете std::atan2 из <cmath>, то вы можете сделать что-то вроде:

template <typename P, typename U>
double delta_theta(P p, U u) {
    auto delta = std::atan2(u.y, u.x) - std::atan2(p.y, p.x);
    if (delta > M_PI) return delta - 2*M_PI;
    if (delta < -M_PI) return return delta + 2*M_PI;
    return delta;
}

Это обычно возвращает положительное значение, если u влево (повернуть против часовой стрелки) ) и отрицательный, если u направо (повернуть по часовой стрелке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...