3D вектор (X, Y, Z) взгляд на вектор - PullRequest
2 голосов
/ 21 ноября 2011

Я работаю с исходным sdk (который использует c ++), и я хочу повернуть угол объекта, чтобы он смотрел на другой объект.

Сущность можно рассматривать как игровой объект или подобный объект, и она имеет положение (Вектор) в мире, а также угол (Вектор).

Я могу вращать объект, используя SetAbsAngles, который принимает QAngle (в основном вектор) в качестве параметра.

Explanation of what I want and have

1 Ответ

3 голосов
/ 21 ноября 2011

Вот некоторый псевдокод:

vec3 p = entity2->getPosition();
vec3 r = entity1->getPosition();
float xdistance = p[0] - r[0];
float ydistance = p[1] - r[1];
float zdistance = p[2] - r[2];
float xzdistance = sqrt(xdistance * xdistance + zdistance * zdistance);
entitity1->setHeading(atan2(xdistance, zdistance)); // rotation around y
entitity1->setPitch(-atan2(ydistance, xzdistance)); // rotation around x
entitity1->setBank(0); // rotation around z

Z-вращение установлено в 0, потому что это не может быть определено. Вы можете установить его свободно, если хотите.

Это работает в системе координат, где z обращено вперед, y вверх и x вправо. Если вы используете другую систему, возможно, вам придется настроить некоторые знаки.

...