Измените ваш дескрипторный метод на этот, причина, по которой вы не могли его переместить более одного раза, заключалась в том, что вы использовали .getX (), который возвращал 0, это сработало для меня, удачи
@FXML
void handleKeyboardInput(KeyEvent event) {
int currentX = (int) ship.getLayoutX();
if (event.getCode() == KeyCode.LEFT && ship.getLayoutX() >= 14) {
currentX = currentX - 5;
ship.setLayoutX(currentX);
} else if (event.getCode() == KeyCode.RIGHT && ship.getLayoutX() <= 500) {
currentX = currentX + 5;
ship.setLayoutX(currentX);
}
}
Используйте это, если вы хотите принять ввод на весь экран для нажатия клавиш
universe.getParent().getScene().setOnKeyPressed(this::handleKeyboardInput);