Делаю что-то типа боулинга. Вид сверху. Графика спрайтовая. За поведение кеглей отвечает PhysX. Кегля представлена спрайтовой послеовательностью (объект поворачивается на 1 градус на каждый кадр - типа кегля падает в сторону и эта сторна принята за 0 градусов азимута). С координатами из PhysX нет проблем. Но нужно узнать положение кегли в пространстве, чтобы выбрать соответсвующий спрайт дя соответсвующего угла наклона объекта в PhysX и развернтуь его на нужный угол по оси, которая направлена из плоскости экрана (вид на сцену сверху). Вращение кегли вокруг центральной оси не нужно. Как, зная углы поворота объекта по осям, получить для объекта что-то типа азимута (для поворота спрайта), т.е. поворот по оси, перпендикулярной плоскости экран и склонения к горизонту (для выбора соответсвующего спрайта), т.е. угол наклона объекта к плоскости экрана. Углы поворота по осям получаю так:
| Код | NxQuat quat = actor->getGlobalOrientationQuat(); float angle; NxVec3 vec; quat.getAngleAxis(angle, vec);
float angle_x = angle * vec.x; float angle_y = angle * vec.y; float angle_z = angle * vec.z;
|
Как это дальше можно использовать для решения задачи? |