При повороте и передвижении танка направление выстрела становится некорректным.(смещается в сторону) Если поворачивать танк в точке 0;0, то направление остается правильным.
Как можно решить это проблему?
Функция SetDirection нормализует принимаемое значение.
Не пудри мозги, переделай свою математику поворотов, используй кватернионы и не парься )
У тебя уже как то считается поворот башни! как так можно не рассчитать этот вектор?
Лично от себя:

Геморрой тот еще желаю удачи, учитывая что ты споткнулся только в начале пути она тебе ооооооочень понадобиться.
Dronas
Кватернионами никогда не пользовался, но слышал про них. Завтра погляжу.
foxes
Ну, вот как-то так не смог. Поворачивать-то он поворачивается, но при повороте сильно уходит в сторону.
Сдаётся мне этот код писало два разных человека. И тот кто писал код поворота пушки это не ты. Потому что если бы это был ты то вопросов бы таких не задавал. Поскольку пушка у тебя и есть тот самый m_shootRay и она почему то ни куда не уходит.
Вообще ответ в вопросе!
Vlad2001_MFS, что даёт "* glm::vec4(0.0f, 0.0f, 10.0f, 0.0f)"?
Если m_gunTransform содержит в себе абсолютную позицию и поворот орудия, то как-то так:
m_shootRay.SetOrigin(m_gunTransform * glm::vec4( 0.0f, 0.0f, 0.0f, 1.0f)); m_shootRay.SetDirection( m_gunTransform * glm::vec4( 0.0f, 0.0f, 1.0f, 0.0f));
XProger
Не помог твой вариант, возможно что-то не так у меня с m_gunTransform. Задолбала эта хрень, несколько дней уже бьюсь, может где простой ошибки не вижу.
m_gunTransform = glm::translate(m_pos) * glm::rotate( glm::radians( m_hullAngle + m_turretAngle), glm::vec3( 0.0f, 1.0f, 0.0f)) * glm::rotate( glm::translate( m_gunPos), glm::radians( m_gunAngle), glm::vec3( 1.0f, 0.0f, 0.0f)) * glm::translate( -m_gunPos);
Тема в архиве.