Ich versuche zu lernen, 3D-Programmierung in Javafx. Mein Ziel ist es, den Cursor für eine First-Person-Ansicht in der Mitte zu fixieren oder in die Mitte zu verschieben.JavaFX Erste Person zentrieren Maus
Ich machte eine Maus bewegte Ereignis und ich bewege den Cursor in die Mitte des Bildschirms, dann ändern Sie die Kamera je nachdem, wohin ich die Maus bewegte. Das Problem besteht darin, dass das Ereignis immer dann ausgelöst wird, wenn der Cursor zurück in die Mitte bewegt wird, wobei die Änderung des Kamerawinkels umgekehrt wird. Wer weiß, wie man das macht, wenn man den Cursor zurück in die Mitte bewegt, beeinflusst das nicht den Kamerawinkel?
scene.setOnMouseMoved(e -> {
int screenWidth = (int) Screen.getPrimary().getBounds().getWidth();
int screenHeight = (int) Screen.getPrimary().getBounds().getHeight();
moveCursor(screenWidth/2, screenHeight/2);
double dx = mouseX - e.getSceneX();
double dy = mouseY - e.getSceneY();
mouseX = e.getSceneX();
mouseY = e.getSceneY();
camAngleX += dx/10;
camAngleY -= dy/10;
});
ist hier nach der Booleschen Check Hinzufügen ... I definiert "ignoreMouseMove" woanders.
scene.setOnMouseMoved(e -> {
if (ignoreMouseMove) {
ignoreMouseMove = false;
} else {
double cx = primaryStage.getX() + scene.getX() + sceneX/2;
double cy = primaryStage.getY() + scene.getY() + sceneY/2;
double dx = mouseX - e.getSceneX();
double dy = mouseY - e.getSceneY();
mouseX = e.getSceneX();
mouseY = e.getSceneY();
camAngleX += dx/10;
camAngleY -= dy/10;
ignoreMouseMove = true;
moveMouse(cx, cy);
}
}
ich die boolean hinzugefügt Überprüfen Sie, wie Sie sagten, und es hat immer noch nicht funktioniert – Ale
So bekommen Sie immer noch das Verhalten von 'MausEreignisse' nennen sich rekursiv eine unendliche Menge an Zeit? – Jhonny007
Ja, möchten Sie den ganzen Code sehen? – Ale