LWJGL 2根据鼠标移动的照相机

时间:2019-02-27 12:02:46

标签: camera mouse lwjgl

你好,我是OpenGl和lwjgl的新手。我已经开发了一段时间的游戏,但遇到了问题。我使用mouse.getdx和dy旋转,但是当我按wasd(默认的movemnt键)时,它们却不随方向变化。我尝试了一些示例,但没有一个起作用。这是代码: https://pastebin.com/UXHGGh5n Code 关于如何解决此问题的任何想法?谢谢

1 个答案:

答案 0 :(得分:0)

将所需的更改简单地存储在Vector中,然后将其乘以相机矩阵的逆,然后将结果添加到您的位置。  例如,您的方法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是否有自己的用于矩阵和向量相乘的方法,因此您可能必须自己编写这些方法。除此之外,这应该可以工作。