你好,我是OpenGl和lwjgl的新手。我已经开发了一段时间的游戏,但遇到了问题。我使用mouse.getdx和dy旋转,但是当我按wasd(默认的movemnt键)时,它们却不随方向变化。我尝试了一些示例,但没有一个起作用。这是代码:
https://pastebin.com/UXHGGh5n Code
关于如何解决此问题的任何想法?谢谢
答案 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是否有自己的用于矩阵和向量相乘的方法,因此您可能必须自己编写这些方法。除此之外,这应该可以工作。