LWJGL 2 相机随鼠标移动
LWJGL 2 Camera Movement According to mouse
您好,我是 OpenGl 和 lwjgl 的新手。我开发游戏已经有一段时间了,但遇到了一个问题。我使用 mouse.getdx 和 dy 来旋转,但很明显,当我按下 wasd(默认移动键)时,它们不会根据方向改变。我尝试了一些示例,但其中 none 有效。这是代码:
https://pastebin.com/UXHGGh5nCode
关于如何解决这个问题的任何想法?谢谢
只需将所需的更改存储在向量中,然后将其与相机矩阵的逆相乘并将结果添加到您的位置。
例如,您的方法 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 是否有自己的矩阵和向量相乘方法,所以您可能需要自己编写这些方法。除此之外,这应该可行。
您好,我是 OpenGl 和 lwjgl 的新手。我开发游戏已经有一段时间了,但遇到了一个问题。我使用 mouse.getdx 和 dy 来旋转,但很明显,当我按下 wasd(默认移动键)时,它们不会根据方向改变。我尝试了一些示例,但其中 none 有效。这是代码:
https://pastebin.com/UXHGGh5nCode
关于如何解决这个问题的任何想法?谢谢
只需将所需的更改存储在向量中,然后将其与相机矩阵的逆相乘并将结果添加到您的位置。
例如,您的方法 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 是否有自己的矩阵和向量相乘方法,所以您可能需要自己编写这些方法。除此之外,这应该可行。