嘿,我正在使用lwjgl从事3D项目。此时,玩家的摄像机视图被鼠标移动。使用箭头键和&我想将鼠标视图转换为w,a,s,d,这样您就不必再使用鼠标。
为什么我这样做?我有一个我无法使用的界面系统,因为应用程序当前抓住鼠标移动视图,因此播放器无法与界面交互。
我得到了什么:
public void cameraView() {
if (Mouse.isGrabbed()) {
float mouseDX = Mouse.getDX() * 0.8f * 0.16f;
float mouseDY = Mouse.getDY() * 0.8f * 0.16f;
if (rotation.y + mouseDX >= 360) {
rotation.y = rotation.y + mouseDX - 360;
} else if (rotation.y + mouseDX < 0) {
rotation.y = 360 - rotation.y + mouseDX;
} else {
rotation.y += mouseDX;
}
if (rotation.x - mouseDY >= -89 && rotation.x - mouseDY <= 89) {
rotation.x += -mouseDY;
} else if (rotation.x - mouseDY < -89) {
rotation.x = -89;
} else if (rotation.x - mouseDY > 89) {
rotation.x = 89;
}
}
}
如果有人能帮助我,那就太棒了。提前谢谢!
答案 0 :(得分:0)
if(Keyboard.isKeyDown(Keyboard.KEY_A)) {rotation.y -= 1;}
if(Keyboard.isKeyDown(Keyboard.KEY_D)) {rotation.y += 1;}
这应该与Mouse.getDX()相同 或者,您可以使用:
while(Keyboard.next()) {
if(Keyboard.getEventKey() == Keyboard.KEY_ESCAPE) {
if(Keyboard.getEventKeyState()) {
Mouse.setGrabbed(!Mouse.isGrabbed());
Mouse.setCursorPosition(Display.getWidth()/2, Display.getHeight()/2);
}}}
if(Mouse.isGrabbed()) {
//Use mouse for moving
} else {
//Use mouse for interface
}