1
私はjavafxで3Dプログラミングについて学びたいと思っています。私の目標は、カーソルを中央にロックするか、カーソルを最初の人の視点のために中央に移動することです。JavaFXファーストパーソンセンタリングマウス
私はマウス移動イベントを作成し、カーソルを画面の中央に移動してから、マウスをどこに移動したかによってカメラを変更します。問題は、カーソルを中央に戻すたびにイベントが再び発生し、カメラの角度の変化が逆転することです。誰もがそれを作る方法を知っているそれはそれがカメラの角度に影響を与えない中心にカーソルを戻す?ここで
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;
});
は、ブールチェックを追加した後... は、私がどこかに「ignoreMouseMove」を定義しています。あなただけのようなブール値チェック必要
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);
}
}
私はブール値を追加しましたあなたが言ったようにチェックしてもまだ動作していませんでした – Ale
それで、あなたは 'mouseEvents'の動作を再帰的に無限に呼び出すようになっていますか? – Jhonny007
まあ、コード全体を見たいですか? – Ale