LWJGL 2 Движение камеры по мышке - PullRequest
0 голосов
/ 27 февраля 2019

Здравствуйте, я новичок в OpenGl и lwjgl.Я несколько раз разрабатывал игру и столкнулся с проблемой.Я использую mouse.getdx и dy, чтобы вращаться, но, очевидно, когда я нажимаю wasd (клавиши movemnt по умолчанию), они не меняются в зависимости от направления.Я попробовал несколько примеров, но ни один из них не сработал.Вот код: https://pastebin.com/UXHGGh5nCode Есть идеи, как решить эту проблему?Спасибо

1 Ответ

0 голосов
/ 27 февраля 2019

Просто сохраните нужные изменения в векторе, затем умножьте это на обратную матрицу камеры и добавьте результат к вашей позиции.Например, ваш метод move может выглядеть так:

public void move() {
    Vector3f movement = new Vector3f(0,0,0);
    float x = Mouse.getX();

    if(Keyboard.isKeyDown(Keyboard.KEY_W))
        movement.z-=0.02f;
    if(Keyboard.isKeyDown(Keyboard.KEY_D))
        movement.x+=0.02f;
    if(Keyboard.isKeyDown(Keyboard.KEY_A))
        movement.x-=0.02f;
    if(Keyboard.isKeyDown(Keyboard.KEY_S))
        movement.z+=0.02f; 

    movement = yourCameraMatrix.inverse().multiply(movement);
    position.add(movement);
}

Я не уверен, есть ли у lwjgl свои собственные методы для умножения матриц и векторов, поэтому вам, возможно, придется их программировать самостоятельно.Кроме того, это должно работать, хотя.

...