OpenGL Движение вверх - PullRequest
       7

OpenGL Движение вверх

0 голосов
/ 01 сентября 2018

Я создаю игру, используя 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, но это не дает правильного движения.

Кто-нибудь знает, что мне делать?

1 Ответ

0 голосов
/ 01 сентября 2018

dx и dz оба должны быть умножены на cos(toRadians(getRotX()))).

...