Я создаю игру, используя LWJGL OpenGL. Чтобы переместить игрока (космический корабль), я перемещаю X и Z на основе вращения игрока по оси Y:
float dx = distMoved * sin(toRadians(getRotY())));
float dz = distMoved * cos(toRadians(getRotY())));
Это все работает нормально, однако, для движения вверх, я использую этот код, который вроде работает:
float dy = distMoved * sin(toRadians(getRotX())));
Проблема в том, что мой игрок двигается на одну и ту же величину вперед (X и Z) независимо от моего вращения вверх и вниз, а это означает, что мой игрок может быть повернут на 90 градусов вверх, и все еще двигать X и Z.
Я пытался вычесть dy из 'distMoved' до вычисления движения X и Z, но это не дает правильного движения.
Кто-нибудь знает, что мне делать?