你好,我是OpenGl和lwjgl的新手。我已经开发了一段时间的游戏,我遇到了一个问题。我使用mouse.getdx和dy来旋转,但很明显,当我按下wasd (默认的movemnt键)时,它们不会根据方向改变。我试过一些例子,但都不起作用。下面是代码:https://pastebin.com/UXHGGh5nCode你有什么想法来解决这个问题吗?谢谢
发布于 2019-02-28 01:40:47
只需将所需的更改存储在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是否有自己的方法来乘以矩阵和向量,所以您可能必须自己编写这些方法。除此之外,这应该是可行的。
https://stackoverflow.com/questions/54905063
复制相似问题